今天獲取一個圖片內容時, fopen("aaaaaa.png", "r"), 讀取完文件頭就停止了, 后來模式改為 "rb" 就可以了, 特此記錄下;
由於字符的ASCII碼不可能出現 -1, 因此EOF定義為 -1 是合適的
當以文本形式讀取文件內容, 讀入的字符值等於EOF時, 表示讀入的已不是正常的字符而是文件結束符
當以二進制形式讀取文件內容, 信息都是以數值方式存在的, EOF的值可能就是所要處理的二進制文件中的信息, 此時需要用 feof() 來判斷是否到達了文件結尾
即EOF可以作為文本文件的結束標志, 但不能作為二進制文件的結束符, feof函數既可以判斷二進制文件, 又可以判斷文本文件
讀寫文本或二進制形式時的區別:
1.二進制和文本文件在內存中存儲方式是一樣的, 只是二進制無法找到一個合適的編碼對其字節進行解碼展現, 故而展示亂碼(參考:http://www.cnblogs.com/JohnABC/p/3478134.html)
2.二進制方式讀文件時, 會原封不動的讀出文件的全部內容, 寫的時候, 也是把內存緩沖區的內容原封不動的寫到文件中
3.文本方式在讀文件時, 會將換行符號CRLF(0x0D 0x0A)全部轉換成單個的0x0A, 並且當遇到結束符CTRLZ(0x1A)時, 就認為文件已經結束, 相應的, 寫文件時, 會將所有的0x0A換成0x0D0x0A, 所以, 若使用文本方式打開二進制文件時, 就很容易出現文件讀不完整, 或內容不對的錯誤, 即使是用文本方式打開文本文件, 也要謹慎使用, 比如復制文件, 就不應該使用文本方式
Linux下帶不帶 "b" 是相同的