Files

為什麼在 Unix 上打開文件以進行二進制訪問是“沒有意義的”,對於讀/寫來說也不是“+”?

  • March 15, 2018

我正在閱讀 C 程式語言(第 2 版)。在第 157 和 158 頁上,作者給出了fopenUnix 系統中的程式碼片段。在片段的最後,作者補充道:

特別是,我們fopen不能辨識表示二進制訪問的“b”,因為這在 UNIX 系統上沒有意義,也不能辨識允許讀取和寫入的“+”。

為什麼作者說它沒有意義?(這裡所說的“b”和“+”是文件訪問方式)

一些非 Unix 系統以不同的方式處理二進製文件和文本文件。例如,在 DOS、Windows 和 OS/2 下(在fopen設計時並不相關,但可以作為有用的範例),以文本模式打開文件並寫入文件將轉換“C”約定的行尾 ( \n)平台需要的任何東西。在其他系統上,以二進制模式打開文件將導致它在記錄中進行處理。這就是fopen“b”標誌控制的內容:沒有它打開的文件以文本模式打開,使用它打開的文件以二進制模式打開。由於 Unix 風格的系統沒有這種區別,“b”被忽略(並且不會導致錯誤)。

我的這本書沒有提到“+”,但我猜fopen當時不支持它(現在支持)。

引用自:https://unix.stackexchange.com/questions/429969