文本文件是可以看到的字符, 二進制文件是不可視字符,如圖片.
二進制文件: 包含在 ASCII及擴展 ASCII 字符中編寫的數據或程序指令的文件。計算機文件基本上分為二種:二進制文件和 ASCII(也稱純文本文件),圖形文件及文字處理程序等計算機程序都屬於二進制文件。這些文件含有特殊的格式及計算機代碼。ASCII 則是可以用任何文字處理程序閱讀的簡單文本文件。
由於很難嚴格區分文本文件和二進制文件的概念,所以我們可以簡單地認為,如果一個文件專門用於存儲文本字符的數據,沒有包含字符以外的其他數據,我們就稱之為文本文件,除此之外的文件就是二進制文件。
1之所以要區分兩種文件模式,是忽悠初學計算機的人.
比如一篇文章,如果用中文寫的,你一看就懂,你就可以蛋疼的定義它為文本模式
與之對應,同樣內容,你用英文寫的或者甲骨文寫的,你就可以定義為二進制模式
新華字典你姑且可以定義為"記事本",用對應看這篇文章,就是OK的
如果你用新華字典來嘗試看英文寫的文章,你就可以稱呼它為亂碼.
2.二種打開方式稍有區別,就是換行代碼0D0A表示,文本認為它就是一個字符,二進制認位是2個字符
你就知道文本有多蛋疼了.
4.你把文本文件看成二進制文件的一種,就可以理解了,世界上本就沒有所謂文本,都是吃多了撐出來的.
無論是文本文件,還是unicode 和ascii 的編碼,這些都是文件的解釋方式。
舉個例子,文件里有個單詞"apple",那么現在要求用中文模式打開,那么就會顯示“蘋果”,但是對於的文件內容來說,它還是apple,並沒有變,只是解釋方式變了。
好,來回答lz的問題:
1、為什么用fopen打開文件要分二制度和文本文件模式?
這是兩種解釋方式
2、二種打開方式在實現上有什么區別嗎?
與其說打開方式,不如說是文件內容的解釋方式。
二進制就是以字節來讀取寫入,沒有任何的附加動作。
文本方式對回車和換行符進行了處理.
大家都知道計算機的存儲在物理上是二進制的,所以文本文件與二進制文件的區別並不是物理上的,而是邏輯上的。這兩者只是在編碼層次上有差異。
簡單來說,文本文件是基於字符編碼的文件,常見的編碼有ASCII編碼,UNICODE編碼等等。二進制文件是基於值編碼的文件,你可以根據具體應用,指定某個值是什么意思(這樣一個過程,可以看作是自定義編碼)。從上面可以看出文本文件基本上是定長編碼的(也有非定長的編碼如UTF-8),基於字符嘛,每個字符在具體編碼中是固定的,ASCII碼是8個比特的編碼,UNICODE一般占16個比特。而二進制文件可看成是變長編碼的,因為是值編碼嘛,多少個比特代表一個值,完全由你決定。