1. 程式人生 > >c 開啟檔案方式(二進位制和文字)

c 開啟檔案方式(二進位制和文字)

c語言檔案操作的一個問題:

   c語言中開啟檔案有兩種方式,一種是二進位制方式,另一種是文字方式(ASCII碼方式)。這兩種方式有什麼區別?(對於Linux這種只有一種檔案型別的作業系統來說是沒有區別的)

   我們就以windows為例說說區別:

   a.以文字方式開啟檔案,若將資料寫入檔案,如果遇到換行符'\n'(ASII 值為10,0A),則會轉換為回車—換行'\r\n'(ASCII值為13,10,0D0A)存入到檔案中,同樣讀取的時候,若遇到回車—換行,即連續的ASCII值13,10,則自動轉換為換行符。

      而以二進位制方式開啟檔案時,不會進行這樣的處理。

   b.還有如果以文字方式開啟檔案時,若讀取到ASCII碼為26(^Z)的字元即0x1a,則停止對檔案的讀取,會預設為檔案已結束,而以二進位制方式讀取時不會發生這樣的情況。由於正常情況下我們手動編輯完成的檔案是不可能出現ASCII碼為26的字元,所以可以用feof函式去檢測檔案是否結束。

   所以,由於存在上面的兩個區別,我們在明確檔案型別的時候,最好使用相對應的方式對檔案進行開啟。對於那些不明確檔案型別的時候,最好使用二進位制方式開啟檔案。