2010-07-05 149 views
3

我正在閱讀二進制文件。當它到達最後。它似乎被feof()函數終止。是否因爲二進制文件沒有EOF字符?如果是的話,我該如何解決。文件閱讀:feof()二進制文件

目前,當它到達文件在5526900.結束位置它不會停止我的代碼是使用while循環

while (!feof(f)) 

。它只是不斷嘗試閱讀,而我堅持循環。

誰能告訴我爲什麼以及如何解決它。

感謝

回答

22

,則不應使用FEOF()循環上 - 而是使用的fread的返回值() - 循環,直到它返回零。如果您考慮讀取空文件,這很容易看出 - feof()在讀取操作後返回EOF狀態,所以如果用作循環控制,它總會嘗試讀取僞造數據。

我不知道爲什麼這麼多人認爲feof()(和C++流的eof()成員)能夠預測下一次讀取操作是否成功,但相信我,他們不能。

+0

++好抓,尼爾 – 2010-07-05 17:00:46

+0

謝謝。它現在功能正如預期的那樣。謝謝尼爾。 – Grey 2010-07-05 18:05:48