逐行读取文本文件并检索C中每行的内容

说一个文本文件就像:

1, 2345, 7788, 463, ABC 2, 387, 1100, 321, CCC 2, 2222, 22222, 22, DSA 

所以这个文本文件中有3行,我的项目需要我们实现一个逐行读取该文本文件的函数,并在读取特定行时检索每行的内容,然后检查该行的内容。

例如,我将从第一行开始读取此文件。 因此,当读取第一行(1,2345,7788,463,ABC)时,我首先需要将这一行存储到一个字符串中(比如它的char [] str),然后我需要将这个str分成5个部分,每个部分包含由逗号分隔的五个不同的字段内容,例如p1,p2,p3,p4和p5。 然后我需要检查p3是否为“1100”。 如果是,那么关闭这个文件并继续程序,如果不是,那么我需要继续阅读第二行并做同样的事情,显然1100是第二行的第三个字段,所以在阅读之后这一行该函数将终止。

现在任何人都可以告诉我如何实现它? 我是C的新手,我搜索了互联网并获得了一些关于fgets()的信息,例如:

 if (fgets(str, 60, "text.txt")!=NULL){ puts(str); } 

但在这里我看不到任何暗示这个frets()逐行读取文本文件。

提前致谢! :d

你要这个:

 char str[60]; FILE* f = fopen("text.txt", "r"); if (f == NULL) exit(1); while(fgets(str, 60, f) != NULL){ fputs(str, stdout); } fclose(f); 

如何使用您的代码检查每一行?

使用@Mike中的代码,添加以下内容:

 char str[60]; FILE* f = fopen("text.txt", "r"); if (f == NULL) exit(1); while(fgets(str, 60, f) != NULL){ if(strstr(str, "1100") //Add these lines to test for "1100" { puts("Found 1100!", stdout);//optional puts(str, stdout);//optional fclose(f); return; } fputs(str, stdout); } fclose(f); 
 #include  int main(){ char str[64]; int p1, p2, p3, p4; char p5[16]; FILE *fp; int i; fp=fopen("text.txt", "r"); while(fgets(str, sizeof(str), fp)!=NULL){ if(sscanf(str, "%d, %d, %d, %d, %15s", &p1, &p2, &p3, &p4, p5)==5){ if(p3 == 1100) break; //do something puts(str); } } fclose(fp); return 0; }