文本與二進位方式開啟檔案的區別

來源:互聯網
上載者:User
    文字檔也叫做ASCII碼檔案,與以‘文本方式’開啟檔案不是同一個概念!文字檔儲存的是ASSCII碼字元,即儲存在磁碟上只佔用二進位的0x20--0x7e。另外,還有斷行符號(0x0d),換行(0x0a),TAB(0x09)等,所以有可壓縮的空間。

    換行和斷行符號是不同的,而且在不同的作業系統,解釋也不相同。‘/n’一般會作業系統被翻譯成"行的結束",即LF(Line-Feed);‘/r’會被翻譯成"斷行符號",即CR(Cariage-Return)

    斷行符號(CR)和換行(LF)符都是用來表示“下一行”的。而標準沒有規定要使用哪一個。於是產生了三種不同的用法:
(1) Dos和windows採用斷行符號+換行(CR+LG)表示下一行
(2) UNIX採用分行符號(LF)表示下一行
(3) MAC機採用斷行符號符(CR)表示下一行。
當在不同的系統間傳遞檔案,就要涉及格式的轉換。

    文本方式和二進位方式的最大區別在於文本方式對於'/n'分行符號的理解不同
(1)在DOS平台下,該字元會被展開成<CR>< LF>兩個控制字元(相當於"/r/n"),在ASCII字元集下是 0DH,0AH
(2)在UNIX平台下,僅僅是<LF>,不會展開。
(3)在二進位方式下,不管是什麼平台,'/n'都是精確的<LF>。

   在linux/unix 系統上,只有一種檔案類型的系統,帶b字母的模式和對應的不帶b字母的模式是相同的。(UNIX文字檔通常不包含Ctrl+Z和/r)

關於EOF:
    EOF可以作為文字檔的結束標誌,但不能作為二進位檔案的結束符.feof函數既可以判斷二進位檔案,又可以判斷文字檔.    EOF在Windows下是ctrl+z,linux下是ctrl+D.

1, Change the default translation mode directly by setting the global variable _fmode in your program. The initial default setting of _fmode is _O_TEXT, for text mode.

2,_O_TEXT sets text (translated) mode. Carriage return–linefeed (CR-LF) combinations are translated into a single linefeed character on input. Linefeed characters are translated into CR-LF combinations on output. _O_BINARY sets binary (untranslated) mode, in which these translations are suppressed.        MS-DOS文字檔用斷行符號符和分行符號的組合/r/n表示行尾。Macintosh文字檔使用只用一個斷行符號符/r來表示行尾。C程式使用/n表示行尾。所以,在C程式以文本方式開啟一個MS-DOS文字檔時,會將/r/n轉換為/n,在寫入檔案的時候它會將/n轉換為/r/n。(如果以二進位方式開啟該檔案,則C程式將看到/r和/n兩個字元。)而對於Macintosh文字檔的文本視圖,在讀取檔案時它會將/r轉換為/n,在寫入檔案的時候它會將/n轉換為/r。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.