C語言文件操作總結

1. 二進制模式和文本模式

文本模式 二進制模式
C可以認識Ctrl+Z爲文件結尾 C只會把Ctrl+Z當做文件中的一個字符,真正的文件結尾在後面
MS-DOS用\r\n組合表示換行符,C將\r\n看作\n 程序將看到這兩個字符

此外,文件的第一個字符可能不是文件的第一個字符,所以用文本文件打開,ftell()可以返回正確的文件當前位置。而使用二進制方式打開,則可能得不到正確的結果。

2. 文本I/O和二進制I/O

如果將整數12345使用文本IO函數fprintf(fp, "%d", num)輸入到文件指針fp所指向的文件中,實質上是將字符1,2,3,4,5輸入到了文件中。佔了5個字節。
而使用二進制IO函數fwrite(&num, siezof(num), 1, fp)輸入到文件指針fp所指向的文件中,則是將12345的二進制形式輸入到了文本中,佔一個int大小的字節。

C Prim Plus中的示圖

文本模式的IO函數可以用在二進制視圖下打開的文件(rbwb等),二進制模式的IO函數也可以用在文本視圖下打開的文件(rw等)。但一般情況下還是在文本視圖下使用文本IO,二進制模式下使用二進制IO。
大概是因爲文本模式的目的是使得人類能夠直接閱讀文件中的內容,要支持一種編碼(ASCII、UTF8)。而二進制是方便計算機讀取數據,同時使文件更小。

參考

C Prim Plus 第五版
C語言文本方式和二進制方式打開文件區別

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章