fopen等 文字方式和二進位制方式開啟檔案的區別

2021-08-21 11:35:31 字數 3077 閱讀 3233

置頂2023年09月04日 14:23:49

第一:1、使用二進位制方式進行讀檔案時,會原封不動的讀出全部的內容,寫檔案的時候,會把記憶體緩衝區的內容原封不動的寫到檔案中。

2、使用文字方式進行讀檔案時,會將回車換行符號crlf(0x0d oxoa)全部轉換成單個的換行符號lf(oxoa),寫檔案的時候,會將換行符號lf( oxoa)全部轉換成回車換行符號crlf(0x0d oxoa)。

下面以寫檔案為例進行說明:

1)、以文字方式寫檔案,行尾加回車符:

file* fp = fopen("1.txt", "wt");//以文字方式寫檔案

if (fp)

fclose(fp);

fp = null;

}測試結果:

可知:在寫檔案時,\n (lf)轉換成了 \r\n (cr lf)。

同理,如果我們在以文字方式寫檔案時,行尾加 回車、換行 符:

file* fp = fopen("1.txt", "wt");//以文字方式寫檔案

if (fp)

fclose(fp);

fp = null;

}測試結果:

結果表明:同樣如此(注意多了乙個空行)。

2)、以二進位制方式進行寫檔案,行尾加 換行 符:

file* fp = fopen("1.txt", "wb");//以二進位制方式寫檔案

if (fp)

fclose(fp);

fp = null;

}結果:

表明:內容原封不動的進行寫入,沒有像文字方式一樣進行轉換。

第二、基於上面第一點的區別,如果使用文字方式開啟二進位制檔案,就很容易出現檔案讀取不完整、或是內容不對的錯誤。下面以文字方式和二進位制方式分別讀取一張進行驗證:

原圖:

1、以二進位制方式進行讀取,並寫入:

結果如下:

內容原封不動,和原圖一樣。

2、以文字形式讀入檔案,並寫入:

結果出現錯誤:

因此,在windos平台下開發中,以二進位制模式建立並寫入的檔案,在讀取時,為了防止讀檔案出錯,建議以二進位制模式進行讀取;同樣的道理,以文字模式建立並寫入的檔案,在讀取該檔案時,建議以文字模式進行讀取。

附上一些常用的檔案讀寫函式,開發時可以自行選擇合適的來用:

fprintf/fscanf  、  fgets/fputs   、   fgetc/fputc   、   fwrite/fread 等

mysql二進位制方式 MySql二進位制連線方式詳解

使用mysql二進位制方式連線 您可以使用mysql二進位制方式進入到mysql命令提示符下來連線mysql資料庫。例項以下是從命令列中連線mysql伺服器的簡單例項 複製 如下 root host mysql u root p enter password 在登入成功後會出現 mysql 命令提示...

fopen,文字檔案與二進位制檔案

在學習c語言檔案操作後,我們都會知道開啟檔案的函式是fopen,也知道它的第二個引數是標誌字串。其中,如果字串中出現 b 則表明是以開啟二進位制 binary 檔案,否則是開啟文字檔案。那麼甚麼是文字檔案,甚麼是二進位制檔案呢?可能大多數人都沒有仔細考慮過。在windows和dos系統中,狹義的文字...

二進位制 二進位制起源

現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...