從文字檔案讀取直到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中文網其他相關文章!