簡體   English   中英

確定流結束時出現EOF問題

[英]Problem with EOF when determine stream end

當我嘗試使用功能feof(FILE *)確定文件結尾時,我發現它無法按預期工作:即使流確實結束,也需要額外讀取。 例如feof(FILE*)如果僅在讀取10個字節后才對具有10個字節數據的文件調用,則不會告訴true。 我需要一個額外的讀取操作,該操作當然返回0,然后feof(FILE *)會說“確定,現在您到達結尾了”。

我的問題是,如果我不想使用feof -style,為什么還要read ,以及如何確定文件末尾或如何知道文件流中還有多少字節?

謝謝和最好的問候。

不要使用feof()或任何變體-就這么簡單。 您希望它以某種方式預測下一次讀取將失敗,但這不是它的作用-它告訴您PREVIOUS讀取的結果是什么。 讀取文件的正確方法是(使用偽代碼):

while( read( file, buffer ) ) {
   do something with buffer
}

換句話說,您需要測試讀取操作的結果。 對於C流和C ++ iostream都是如此。

暫無
暫無

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

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