1樓:投機士
在磁碟的儲存上都是二進位制儲存這點上都一樣。
從檔案編碼的方式來看,檔案可分為ascii碼檔案和二進位制碼檔案兩種。
ascii檔案也稱為文字檔案,這種檔案在磁碟中存放時每個字元對應一個位元組,用於存放對應的ascii碼。例如,數5678的儲存形式為:
asc碼: 00110101 00110110 00110111 00111000
↓ ↓ ↓ ↓
十進位制碼: 5 6 7 8 共佔用4個位元組。ascii碼檔案可在螢幕上按字元顯示, 例如源程式檔案就是ascii檔案,用dos命令type可顯示檔案的內容。
由於是按字元顯示,因此能讀懂檔案內容。
二進位制檔案是按二進位制的編碼方式來存放檔案的。 例如, 數5678的儲存形式為: 00010110 00101110只佔2個位元組。
二進位制檔案雖然也可在螢幕上顯示, 但其內容無法讀懂。
流可以分為兩種型別:文字流和二進位制流。文字流是解釋性的,最長可達255個字元,其中回車/換行將被轉換為換行符「/n」,(如果以"文字"方式開啟一個檔案,那麼在讀字元的時候,系統會把所有的"/r/n"序列轉成"/n",在寫入時把"/n"轉成"/r/n" archim 's opinion )。
二進位制流是非解釋性的,一次處理一個字元,並且不轉換字元。
通常,文字流用來讀寫標準的文字檔案,或者將字元輸出到螢幕或印表機,或者接受鍵盤的輸入;而二進位制流用來讀寫二進位制檔案(例如圖形或字處理文件),或者讀取滑鼠輸入,或者讀寫調變解調器。
如果用文字方式開啟檔案,會把「0d 0a」自動變換成「/n」來存在記憶體中。寫入的時候反向處理。 而二進位制方式開啟的話,就不會有這個過程。
所以從上面可以看出:文字檔案佔磁碟空間大,讀取速度比較慢,但開啟後容易理解;二進位制檔案佔磁碟空間小,讀取速度快,如果要理解檔案檔案的意思需要自己進行解釋。
2樓:匿名使用者
比如要儲存一個整數int a=12345;到檔案可以是文字方式,可以是二進位制方式。
文字方式就是儲存的檔案內容是一個字串12345,記事本可以直接開啟,顯示12345
fprintf(fp, "%d", a);
二進位制方式就是把直接把12345這個數在記憶體的內容(0x00003039)直接放在檔案中,你用記事本開啟是亂碼,一般用16進位制編輯器開啟
fwrite(&a, sizeof(a), 1, fp);
一般都是直接把一個結構儲存到檔案
比如struct stu
students;
3樓:匿名使用者
1、二進位制文字使用fopen函式的二進位制模式「rb」就可以開啟。對於程式來說,不管字尾名如何,檔案分為兩種型別:文字檔案和二進位制檔案。
c語言裡有一系列檔案操作函式。區分文字和二進位制檔案,需要在開啟檔案時設定不同的控制符mode的變數即可。
2、fopen的函式原型:file * fopen(const char * path,const char * mode);
fopen函式的第一個引數是檔案路徑,第二個引數是開啟方式,有以下幾種方式:
r 以只讀方式開啟檔案,該檔案必須存在。
r+ 以可讀寫方式開啟檔案,該檔案必須存在。
rb+ 讀寫開啟一個二進位制檔案,允許讀資料。
rw+ 讀寫開啟一個文字檔案,允許讀和寫。
w 開啟只寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失。若檔案不存在則建立該檔案。
w+ 開啟可讀寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失。若檔案不存在則建立該檔案。
a 以附加的方式開啟只寫檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾,即檔案原先的內容會被保留。(eof符保留)
a+ 以附加方式開啟可讀寫的檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾後,即檔案原先的內容會被保留。 (原來的eof符不保留)
wb 只寫開啟或新建一個二進位制檔案;只允許寫資料。
wb+ 讀寫開啟或建立一個二進位制檔案,允許讀和寫。
wt+ 讀寫開啟或著建立一個文字檔案;允許讀寫。
at+ 讀寫開啟一個文字檔案,允許讀或在文字末追加資料。
ab+ 讀寫開啟一個二進位制檔案,允許讀或在檔案末追加資料。
上述的形態字串都可以再加一個b字元,如rb、w+b或ab+等組合,加入b 字元用來告訴函式庫開啟的檔案為二進位制檔案,而非純文字檔案。
3、例程:
#include
#include
int main ()
while ((iread = fread (szbuf, 1, sizeof (szbuf), fpphoto)) > 0)
fwrite (szbuf, 1, iread, fptarget) ;
while ((iread = fread (szbuf, 1, sizeof (szbuf), fptext)) > 0)
fwrite (szbuf, 1, iread, fptarget) ;
fclose (fpphoto) ;
fclose (fptext) ;
fclose (fptarget) ;
return 0 ;}
4樓:
檔案本質上都是用二進位制存貯的,我不明白你說的「一般儲存方式」是啥。
採用二進位制儲存,最關鍵的是你如何設計你儲存的資料結構。
c語言中怎麼表示,C語言中 怎表達?
四舍 入 標準的c語言中沒有 這個符號及常量,一般在開發過程中是通過開發人員自己定義這個常量的,最常見的方式是使用巨集定義 define pi 3.141592 也可以直接普通變數定義,如 double pi 3.141592 可以負責任的告訴你,c99標準裡沒提這事,但大部分實現裡 vs和gcc ...
C語言中if和switch區別,C語言中if else語句與switch語句的區別在哪裡?
風若遠去何人留 switch語句,可讀性更好,整體流程看起來清晰明確。if語句適應性更強,可以處理更多的情況。所有的switch語句都可以寫成if的形式,比如switch a 可以寫作 if a b case b else if a c case celse default.但是switch 語句,...
C語言中return的含義,C語言中Return 0是什麼作用
及羽揚俊 在函式返回型別為void時,即不需要返回任何值,要想結束函式就用 return 它表示函式執行到這一句時終止函式 return 表示結束當前函式並返回值,如果沒定義,則返回 null 如 return 1 表示返回1 return 表示返回 null 這裡我給你一個簡單的c程式的例子。in...