簡體   English   中英

如何讀取文件中的特定行?

[英]How can I read specific lines in a file?

在一個文件中,寫着這樣的詞:

Name 
Surname 
Age
Job
Telephone
James
Cooper
26
engineer
6545654565
Bob
Allen
22
doctor
5656555655
  ....

我想從這些行打印特定部分(僅用於示例名稱)。 我已經嘗試過這段代碼,但我只能打印我想要的 1 行。 (我只打印 James,但我想打印所有名字:James、Bob、...)。

#include <stdio.h>
#include<stdlib.h>
#include<string.h>

int main(void)
{  
    int lineNumber;   
    static const char filename[] = "hayat.txt";

    for(lineNumber=5;lineNumber<20;lineNumber+5);    

    FILE *file = fopen(filename, "r");
    int count = 0;

    if ( file != NULL )
    {   
        char line[256]; 
        while (fgets(line, sizeof line, file) != NULL) 
        {   
            if (count == lineNumber)
            {                   
                printf("\n  %s ", line);
                fclose(file);

                return 0;  
            }   
            else
            {   
                count++;
            }               
        }   
        fclose(file);
    }  

    return 0;  
}

我怎樣才能做到這一點?

我試圖讓它編寫與問題中的代碼最相似的代碼。 這可能不是最佳解決方案,但應該可以。

#include <stdio.h>
#include<stdlib.h>
#include<string.h>

#define TAMLINE 256

int main(void){
    int lineNumber, count=0;
    static const char filename[] = "hayat.txt";
    FILE *file = fopen(filename, "r");
    if ( file != NULL ){
        char line[TAMLINE];
        /* //use this if you want to skip first 5 lines
        for(int i=0;i<5;i++){
            fgets(line, TAMLINE, file)
        }
        */
        while (fgets(line, TAMLINE, file) != NULL){
            count ++;
            //only print 1st line, 6th line 11 line.. ie lines with names
            if (count%5 == 1){
                printf("%s", line);
            }
        }
    fclose(file);
    }
    return 0;
}

您只打印一次,因為這正是告訴程序要做的事情

if linenumber == count ... print 

else count++ 

將始終只打印一行。

至於如何打印差異類別,您要么找到相似之處(例如某些對象,所有名稱都以大寫字母開頭,沒有數字),要么在數組中指定它們 - 這可能不是您想要的。

暫無
暫無

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

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