1、c語言中預設是按照文字方式開啟檔案。
2、二進位制檔案和文字檔案
(1)檔案是在計算機記憶體中以二進位制表示的資料在外部儲存介質上的另一種存放形式。
(2)檔案通常分為二進位制檔案和文字檔案。
(3)二進位制檔案是包含在 ascii 及擴充套件 ascii 字元中編寫的資料或程式指令的檔案。一般是可執行程式、圖形、圖象、聲音等等檔案。
(4)文字檔案(也稱為ascii檔案):它的每乙個位元組存放的是可表示為乙個字元的ascii**的檔案。它是以 「行」為基本結構的一種資訊組織和儲存方式的檔案,可用任何文字處理程式閱讀的簡單文字檔案。
3、文字方式和二進位制方式
(1)按照文字方式(預設情況下)往檔案中寫入資料時,一旦遇到換行字元(ascii為10),則會轉換為回車-換行(ascii為13、10)。多寫入了乙個字元!在讀取檔案時,一旦遇到回車-換行的組合(即連續的ascii 13、10),則會轉換為換行字元(ascii為10)。
(2)當我們按照二進位制方式往檔案中寫入資料,則將資料在記憶體中的儲存形式原樣輸出到檔案中。
(3)在寫入和讀取檔案時要保持一致。如果採用文字方式寫入,應採用文字方式讀取;如果採用二進位制方式寫入資料,在讀取時也應採用二進位制方式。
(4)不管是文字檔案還是二進位制檔案,如果統一採用二進位制方式進行寫入和讀取,則是不會出錯的。
(5)不管是文字檔案還是二進位制檔案,都可以採用二進位制方式或者文字方式開啟,然後進行寫入或者讀取。但是,對於二進位制檔案來說,如果以文字方式讀取時,可能會出現一些問題。
4、問題產生:給你乙個整數,例如:98341,將這個整數儲存到檔案中,要求在以記事本程式開啟該檔案時,也顯示98341。
如果直接將98341寫入文字檔案中,然後再開啟這個檔案肯定看不到這個整數。因為對於文字檔案來說,它的每乙個位元組存放都是可表示為乙個字元得ascii碼。如果想在記事本中看到98341這個樣子,實際上是得在記事本中看到「這幾個字元相應的ascii碼轉換後的字元」,也就是說,在記事本中看到的「98341」是五個字元,並不是整數:98341!
檔案實際上就是資料記憶體中的儲存形式在外部儲存介質上的另一種存放形式。當以記事本開啟上述檔案,也就是以文字方式開啟該檔案時,該檔案中儲存的每乙個位元組的資料都要作為ascii碼進而轉換為相應的字元,但是上述檔案中的每乙個位元組的資料轉換為字元之後又是不可讀的,因此看到的就是亂碼。
直接int i=98341;fwrite(&i,4,1,file);這樣只會輸出亂碼。
解決辦法:
(1):
file *file;
file=fopen("1.txt","w");
char *p="98341";
fwrite(p,1,5,file);
fclose(file);
或者(2)
file *file;
file=fopen("1.txt","w");
char ch[5];
ch[0]='9';
ch[1]='8';
ch[2]='3';
ch[3]='4';
ch[4]='1';
fwrite(ch,1,5,file);
fclose(file);
或者(3):我們在儲存時去儲存「98341」這五個字元的ascii碼(字元「0」的ascii碼是48)。
file *pfile=fopen("3.txt","w");
int i=98341;
char ch[5];
ch[0]=9+48;
ch[1]=8+48;
ch[2]=3+48;
ch[3]=4+48;
ch[4]=1+48;
fwrite(ch,1,5,pfile);
fclose(pfile);
或者(4)利用itoa()函式將證書轉換為字串,然後將這個字串寫入檔案。但是這種方法值涉及數字的儲存,如果把數字和字元夾雜在一起,並要求以記事本開啟時能看到數字,就不用itoa函式,就要將這些整數數字轉換為ascii碼,然後在下寫入檔案。
file *pfile=fopen("3.txt","w");
int i=98341;
char ch[5];
itoa(i,ch,10);
fwrite(ch,1,5,pfile);
fclose(pfile);
文字檔案與二進位制檔案
從本質上說所有檔案都是二進位制檔案,文字i o是在二進位制i o基礎上提供的一層抽象,它封裝了字元的編碼和解碼過程。在文字i o中自動進行編碼與解碼。在windows和dos系統中,狹義的文字檔案是指擴充套件名為txt的檔案。實際上,那些沒有規定格式的,由可理解的的ascii以及其它編碼文字組成的檔...
文字檔案與二進位制檔案
維基百科 二進位制檔案一般指包含ascii及擴充套件ascii字元中編寫的資料或程式指令的檔案。廣義的二進位制檔案即為檔案,由檔案在外部儲存裝置的存放方式為二進位制而得名。狹義的二進位制檔案即指除文字檔案以外的檔案。簡單來說,文字檔案是基於字元編碼的檔案,常見的編碼有ascii編碼,unicode編...
文字檔案與二進位制檔案
什麼是文字檔案,什麼是二進位制檔案?在windows和dos系統中,狹義的文字檔案是指擴充套件名為txt的檔案。實際上,那些沒有格式的,由可理解的ascii以及其他編碼文字組成的檔案都是文字檔案,如c原始檔,html超文字檔案,xml。除此之外的其他檔案都是二進位制檔案,如word檔案doc,影象格...