feof(feof msdn)
feof用於判斷文件結尾。頭文件<cstdio>。使用方法是feof(fp),fp為指向需要判斷的文件的指針。如果不到文件結尾,返回0值;如果是文件結尾,返回非0.
使用feof判斷文件結尾一定要非常注意以下一點:
假設文件包含10字節,並且你讀取了十字節,調用feof函數,函數返回值均為0,這是因為盡管文件指針這時已經指向文件尾了,但是你沒有試圖越過文件尾讀取數據,只有當你嘗試了讀取第十一個字節時,調用feof,函數才會返回0.
因此,使用feof常用的邏輯結構是先讀在判斷,如果先判斷在讀取,就會發生異常。
c++ reference對其的講解是:
“EOF是一個整數類型的宏定義,擴展為負數常量表達式(通常為-1)。
它被頭文件<cstdio>中的好幾個函數作為返回值使用,來表明已經到達文件尾或者示意一些其他的錯誤條件。
它也被作為一個值來表示無效的字符。
在C++中,這個宏定義為char_traits<char>::eof()
.”
feof與EOF異同
具體參看 feof與EOF的用法
EOF通常用來判斷文本文件的結尾,因為EOF的值為-1,ASCII都是字符型,不可能出現-1的情況。而在二進制文件中,信息以數值存放,使用EOF就可能會異常。
因此,通常使用feof來判斷二進制文件的結尾。