使用 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语言编程

C语言题目求助(ps学号还有一个范围,10000000-99999999)

从 html 表单发送带有 csv 附件的电子邮件

电子学会青少年软件编程 Python编程等级考试三级真题解析(选择题)2020年9月B卷

电子学会青少年软件编程 Python编程等级考试三级真题解析(选择题)2020年9月B卷