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

时间:2014-04-21 15:53:09

标签: c string text

说一个文本文件就像:

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

3 个答案:

答案 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;
}