C語言 EOF和feof 判斷檔案結尾的區別

2021-08-20 21:51:08 字數 666 閱讀 3803

由於字元的ascii碼不可能出現 -1, 因此eof定義為 -1 是合適的

當以文字形式讀取檔案內容, 讀入的字元值等於eof時, 表示讀入的已不是正常的字元而是檔案結束符

當以二進位制形式讀取檔案內容, 資訊都是以數值方式存在的, eof的值可能就是所要處理的二進位制檔案中的資訊, 此時需要用 feof() 來判斷是否到達了檔案結尾

即eof可以作為文字檔案的結束標誌, 但不能作為二進位制檔案的結束符, feof函式既可以判斷二進位制檔案, 又可以判斷文字檔案

讀寫文字或二進位制形式時的區別:

1.二進位制和文字檔案在記憶體中儲存方式是一樣的, 只是二進位制無法找到乙個合適的編碼對其位元組進行解碼展現, 故而展示亂碼(參考:

2.二進位制方式讀檔案時, 會原封不動的讀出檔案的全部內容, 寫的時候, 也是把記憶體緩衝區的內容原封不動的寫到檔案中

3.文字方式在讀檔案時, 會將換行符號crlf(0x0d 0x0a)全部轉換成單個的0x0a, 並且當遇到結束符ctrlz(0x1a)時, 就認為檔案已經結束, 相應的, 寫檔案時, 會將所有的0x0a換成0x0d0x0a, 所以, 若使用文字方式開啟二進位制檔案時, 就很容易出現檔案讀不完整, 或內容不對的錯誤, 即使是用文字方式開啟文字檔案, 也要謹慎使用, 比如複製檔案, 就不應該使用文字方式

linux下帶不帶 "b" 是相同的

C語言中的EOF和feof

原文 在c語言中經常用eof和feof 來判斷檔案的結束,現將有關用法總結如下 定義eof是end of file 的縮寫,是c語言中標準庫中定義的巨集,定義為 define eof 1 feof 用於測試流檔案的結束,有巨集和函式兩種定義 巨集定義 define feof stream strea...

feof 和EOF的用法 C中檔案結尾的判斷

昨天突然被一位朋友問到了關於檔案結尾的程式問題。在用feof 判斷檔案時,複製會多產生乙個字元。這個問題在大一的時候,老師上課就強調過,但那時只是模糊的記得個大概,記得這個函式如果用的不對就是會出現問題,解決是要先讀一下,然後再判斷,具體的什麼還真實忘了。而且平常經常用的eof,所以這個問題自己並沒...

feof 和EOF的用法 C中檔案結尾的判斷

昨天突然被一位朋友問到了關於檔案結尾的程式問題。在用feof 判斷檔案時,複製會多產生乙個字元。這個問題在大一的時候,老師上課就強調過,但那時只是模糊的記得個大概,記得這個函式如果用的不對就是會出現問題,解決是要先讀一下,然後再判斷,具體的什麼還真實忘了。而且平常經常用的eof,所以這個問題自己並沒...