首頁 >後端開發 >C++ >為什麼我的 C 程式碼在讀取文字檔案直到 EOF 時會列印兩次文字檔案的最後一行?

為什麼我的 C 程式碼在讀取文字檔案直到 EOF 時會列印兩次文字檔案的最後一行?

Barbara Streisand
Barbara Streisand原創
2024-12-30 04:16:09991瀏覽

Why Does My C   Code Print the Last Line of a Text File Twice When Reading Until EOF?

從文字檔案讀取直到EOF:解決最後一行重複

提供的C 程式碼從文字檔案讀取整數,直到遇到文件結束(EOF) 指示器。但是,它錯誤地將文件上的最後一個整數列印兩次。這是由於程式循環結構中處理 EOF 指示符的方式所致。

在執行期間,程式進入一個循環,該循環將持續到偵測到 EOF 指示符為止。當循環遍歷文件時,它從文件中獲取整數“x”並將其列印到控制台。然而,在讀取檔案中的最後一個整數後,遇到了 EOF 指示符。

出現問題的原因是循環條件在取得最後一個整數「x」後計算 EOF。這意味著循環將繼續使用上一次迭代中加載的相同“x”值,從而有效地將其列印兩次。

要解決此問題,應修改循環條件以檢查 EOF 指示符在嘗試取得整數之前。這可以透過使用稍微不同的循環結構來實現:

while (iFile) {
    int x;
    iFile >> x;
    if (iFile) {
        cerr << x << endl;
    }
}

在這個修改後的循環中,「iFile」物件用作循環條件,它隱式檢查 EOF 指示符。如果「iFile」為 true(表示檔案不在 EOF),程式將取得並列印一個整數。如果“iFile”為 false(表示 EOF),則退出循環。

透過實現此調整,程式會從文字檔案中讀取整數,直到到達 EOF 並將每個整數列印一次,解決了最後一行被列印兩次。

以上是為什麼我的 C 程式碼在讀取文字檔案直到 EOF 時會列印兩次文字檔案的最後一行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn