[英]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.