说一个文本文件就像:
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
答案 0 :(得分:1)
你想要这个:
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);
答案 1 :(得分:0)
如何使用您的代码检查每一行?
使用@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);
答案 2 :(得分:0)
#include <stdio.h>
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;
}