使用 C 编程按学生电子邮件 ID 搜索 CSV 文件并显示该学生的完整详细信息 [关闭]
Posted
技术标签:
【中文标题】使用 C 编程按学生电子邮件 ID 搜索 CSV 文件并显示该学生的完整详细信息 [关闭]【英文标题】:Search CSV file by student email id using C programming and display that student complete details [closed] 【发布时间】:2022-01-21 14:38:04 【问题描述】:我有一个 student.csv 文件,其中包含学生姓名、电子邮件 ID、出生日期、卷号。我需要根据搜索过滤器(即学生电子邮件 ID)显示完整的学生详细信息。
例如:如果我们有两条记录:
John, john@gmail.com, 12-03-2010
Rahul, rahul@gmail.com, 15-09-2013
搜索输入为rahul@gmail.com
,则只显示最后一条记录。
【问题讨论】:
一次读一行,用strstr查看邮件,非常匹配,打印详细信息 你有多少条记录?在大型数据库中,对文件进行线性搜索变得越来越难以为继。您可能想要反序列化它们并将它们添加到内存中的 B 树、[完美] 哈希、etc。 【参考方案1】:我不清楚您是否只需要查找并打印包含特定电子邮件的行,或者您必须解析 csv。在第一种情况下,您可以执行以下操作:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
FILE *stream;
char *line = NULL;
size_t len = 0;
ssize_t nread;
if (argc != 3)
fprintf(stderr, "Usage: %s <file> <email-to-search>\n", argv[0]);
exit(EXIT_FAILURE);
stream = fopen(argv[1], "r");
if (stream == NULL)
perror("fopen");
exit(EXIT_FAILURE);
while ((nread = getline(&line, &len, stream)) != -1)
/* serching for email into this line (aka record) */
if (NULL != strstr(line, argv[2]))
printf("%s", line);
/* instead of printing you can call a csv parse function */
free(line);
fclose(stream);
exit(EXIT_SUCCESS);
正如您所见,一旦找到包含电子邮件的行,它们就会被打印出来。在代码中的那个位置,您可以将调用添加到解析 csv 行的函数。使用strtok
或类似的方式编写应该不难。
【讨论】:
请不要为不努力的家庭作业问题提供解决方案。以上是关于使用 C 编程按学生电子邮件 ID 搜索 CSV 文件并显示该学生的完整详细信息 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
R_Studio(学生成绩)对两个班级学生成绩进行集合,重新计算学生综合测评成绩并对学生按综合测评成绩进行排名
C语言题目求助(ps学号还有一个范围,10000000-99999999)