簡體   English   中英

逐行讀取文本文件並檢索C中每一行的內容

[英]Read a text file line by line and retrieve the content of each line in 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 <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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM