1、二進制文本使用fopen函數(shù)的二進制模式“rb”就可以打開。對于程序來說,不管后綴名如何,文件分為兩種類型:文本文件和二進制文件。 C語言里有一系列文件操作函數(shù)。區(qū)分文本和二進制文件,需要在打開文件時設(shè)置不同的控制符mode的變量即可。
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名注冊、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、興國網(wǎng)站維護、網(wǎng)站推廣。
2、fopen的函數(shù)原型:FILE * fopen(const char * path,const char * mode);
fopen函數(shù)的第一個參數(shù)是文件路徑,第二個參數(shù)是打開方式,有以下幾種方式:
r 以只讀方式打開文件,該文件必須存在。
r+ 以可讀寫方式打開文件,該文件必須存在。
rb+ 讀寫打開一個二進制文件,允許讀數(shù)據(jù)。
rw+ 讀寫打開一個文本文件,允許讀和寫。
w 打開只寫文件,若文件存在則文件長度清為0,即該文件內(nèi)容會消失。若文件不存在則建立該文件。
w+ 打開可讀寫文件,若文件存在則文件長度清為零,即該文件內(nèi)容會消失。若文件不存在則建立該文件。
a 以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數(shù)據(jù)會被加到文件尾,即文件原先的內(nèi)容會被保留。(EOF符保留)
a+ 以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數(shù)據(jù)會被加到文件尾后,即文件原先的內(nèi)容會被保留。 (原來的EOF符不保留)
wb 只寫打開或新建一個二進制文件;只允許寫數(shù)據(jù)。
wb+ 讀寫打開或建立一個二進制文件,允許讀和寫。
wt+ 讀寫打開或著建立一個文本文件;允許讀寫。
at+ 讀寫打開一個文本文件,允許讀或在文本末追加數(shù)據(jù)。
ab+ 讀寫打開一個二進制文件,允許讀或在文件末追加數(shù)據(jù)。
上述的形態(tài)字符串都可以再加一個b字符,如rb、w+b或ab+等組合,加入b 字符用來告訴函數(shù)庫打開的文件為二進制文件,而非純文字文件。
3、例程:
#include stdlib.h
#include stdio.h
int main ()
{
FILE * fpPhoto, * fpText, * fpTarget ;
int iRead ;
char szBuf[100] ;
printf ("請輸入第一個文件名(jpg):\n") ;
gets (szBuf) ;
fpPhoto = fopen (szBuf, "rb") ;
printf ("請輸入第二個文件名(txt):\n") ;
gets (szBuf) ;
fpText = fopen (szBuf, "rb") ;
printf ("請輸入目的文件名(jpg):\n") ;
gets (szBuf) ;
fpTarget = fopen (szBuf, "wb") ;
if (!fpPhoto || !fpText || !fpTarget)
{
printf ("打開文件失??!\n") ;
system("pause") ;
return -1 ;
}
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 ;
}
wb代表二進制模式文件,允許寫入文件,rb代表二進制模式,允許讀取文件。
形態(tài)字符串都可以再加一個 b 字符,如 rb、w+b 或 ab+ 等組合,加入 b 字符用來告訴函數(shù)庫以二進制模式打開文件。
如果不加 b,表示默認加了 t,即 rt、wt,其中 t 表示以文本模式打開文件。由 fopen() 所建立的新文件會具有 S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666) 權(quán)限,此文件權(quán)限也會參考umask值。
擴展資料
C語言之文件打開模式
r : 讀取文件,若文件不存在則會報錯
w: 寫入文件,若文件不存在則會先創(chuàng)建再寫入,會覆蓋原文件
a : 寫入文件,若文件不存在則會先創(chuàng)建再寫入,但不會覆蓋原文件,而是追加在文件末尾
rb,wb:分別于r,w類似,但是用于讀寫二進制文件
r+ : 可讀、可寫,文件不存在也會報錯,寫操作時會覆蓋
w+ : 可讀,可寫,文件不存在先創(chuàng)建,會覆蓋
a+ :可讀、可寫,文件不存在先創(chuàng)建,不會覆蓋,追加在末尾
參考資料來源:百度百科—c語言
參考資料來源:百度百科—fopen
一、作用不同
1、rb:代表二進制文件,用來讀寫二進制文件。
2、r:代表文本文件,用來讀寫文本文件。
二、特點不同
1、rb:文件編碼是變長的,靈活利用率要高,而譯碼要難一些,不同的二進制文件譯碼方式是不同的。
2、r:是一種典型的順序文件,其文件的邏輯結(jié)構(gòu)又屬于流式文件。
三、優(yōu)劣不同
1、rb:二進制文件比較節(jié)約空間,這兩者儲存字符型數(shù)據(jù)時并沒有差別。但是在儲存數(shù)字,特別是實型數(shù)字時,二進制更節(jié)省空間。
2、r:文本文件存在于計算機系統(tǒng)中,通常在文本文件最后一行放置文件結(jié)束標志。文本文件的編碼基于字符定長,譯碼相對要容易一些。
參考資料來源:百度百科-二進制文件
參考資料來源:百度百科-文本文件
"r".為讀而打開文本文件.(不存在則出錯)
"rb".為讀而打開二進制文件
while(!feof(fp)) 文件到尾判斷
最常用的文件使用方式及其含義如下:
"r".為讀而打開文本文件.(不存在則出錯)
"rb".為讀而打開二進制文件.
"w".為寫而打開文本文件.(若不存在則新建,反之,則從文件起始位置寫,原內(nèi)容將被覆蓋)
"wb".為寫而打開二進制文件.
"a".為在文件后面添加數(shù)據(jù)而打開文本文件.(若不存在,則新建;反之,在原文件后追加)
"ab".為在文件后面添加數(shù)據(jù)而打開一個二進制文件.
"r+".為讀和寫而打開文本文件.(讀時,從頭開始;在寫數(shù)據(jù)時,新數(shù)據(jù)只覆蓋所占的空間,其后不變)
"rb+".為讀和寫而打開二進制文件.只是在隨后的讀寫時,可以由位置函數(shù)設(shè)置讀和寫的起始位置.
"w+".首先建立一個新文件,進行寫操作,隨后可以從頭開始讀.(若文件存在,原內(nèi)容將全部消失)
"wb+".功能與"w+"同.只是在隨后的讀寫時,可以由位置函數(shù)設(shè)置讀和寫的起始位置.
"a+".功能與"a"相同;只是在文件尾部添加新的數(shù)據(jù)后,可以從頭開始讀.
"ab+".功能與"a+"相同;只是在文件尾部添加新數(shù)據(jù)之后,可以由位置函數(shù)設(shè)置開始讀的起始位置.