簡體   English   中英

讀取文本文件的最后一行-C編程

[英]Read last line of a text file - C programming

剛開始我仍然是C語言的新手。 這是我打開文件然后將文件行保存到變量中的功能的一部分。 我做了一段時間直到文件結尾,所以我可以得到最后一行,但是沒有按預期進行。 因此,我想知道如何從文本文件中獲取最后一行? 謝謝。

    tfptr = fopen("trans.txt", "r");
    while (!feof(tfptr)){               
            fscanf(tfptr, "%u:%u:%.2f\n", &combo_trans, &ala_trans, &grand_total);                                              
    }
    fclose(tfptr);  

樣本文本文件:

0:1:7.98
1:1:20.97
2:1:35.96
2:2:44.95
2:2:44.95
3:2:55.94

出了什么問題? 你得到另一行嗎?

不要使用“&”,因為您不想保存指針。 那可能是失敗的原因。

在您的fscanf(tfptr, "%u:%u:%.2f\\n", &combo_trans, &ala_trans, &grand_total); %.2f會引起問題。

printf()不同,您不能在scanf()指定浮點數的精度。 看到這個答案。

因此,不要在scanf格式字符串中使用%f代替%.2f

由於只需要最后一行,因此可以使用fgets()逐行讀取文件並保留最后一行。

while( fgets(str, sizeof(str), tfptr)!=NULL );
printf("\nLast line: %s", str);

文件結束(或讀取時發生錯誤)時, fgets()將返回NULL

輸入文件中的行被一一讀取,並且當沒有更多行要讀取時, str (適當大小的字符數組)將具有最后讀取的行。

然后,您可以使用sscanf()解析str的字符串,例如

sscanf(str, "%u:%u:%f", &combo_trans, &ala_trans, &grand_total);

另外,您應該檢查fopen()的返回值以查看文件是否真正打開。 如果發生某些錯誤, fopen()將返回NULL

if( (tfptr = fopen("trans.txt", "r"))==NULL )
{
    perrror("Error");
}

暫無
暫無

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

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