簡體   English   中英

從C中的文件讀取特定的行和列

[英]Reading specific lines and colums from file in C

我試圖弄清楚如何從文件中讀取特定的行,即我有40行的文件,我只想按行號從文件中打印第3、4、17、24行。 我所知道的只是如何在!= EOF條件下逐行打印整個文件。 我最后想要得到的是一個程序,該程序可以讀取文件的已決定行並將其打印出來。 非常感謝。

void Analyzer(char* filename, int *rows, int *cols) {
    char s[99];
    FILE *fin = fopen(filename, "r");
    if (fin == NULL)
    {
        printf("Cannot open file.\n");
        return;
    }
    while (fgets(s, 99, fin) != EOF) {
        printf("%s", s);
    }
    fclose(fin);
}

編輯:下一步是從確定的行中獲取特定的列,我所說的cloumns是列之間的每一行都有',',我的想法是嘗試使用strtok(),但是如果您有更好的主意,會謝謝你的。

保持讀取行數。

int linecounter = 0;
while (fgets(s, 99, fin) != NULL) {
    switch (++linecounter){
        case 3: case 4: case 17: case 24:
            printf("%s", s);
    }
}

我還修復了您的錯誤; fgets()在文件末尾返回NULL而不是EOF

有點離題的答案:直接在C中執行此操作是一個不錯的練習,但實際上容易出錯。 有更好的工具來過濾文件中的行。

edsed將是我的最愛:

printf %s\\n 3 4 17 24 q| ed txtfile

sed `printf \ \-e%s\  3p 4p 17p 24p d` < txtfile

或帶有數字列表(以行號在ed中輸出)

(cat lnums | while read l; do printf %sn\\n "$l"; done; printf %s\\n q)| ed txtfile

args=`sed -e 's/^[0-9]*$/-e &p/' -e '$a -e d' lnums | tr '\n' ' '`; sed $args txtfile

暫無
暫無

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

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