您好,登錄后才能下訂單哦!
在C言語中,文件操作多是由庫函數(shù)來完成的,這節(jié)引見文件的翻開和封閉。
fopen() 函數(shù)用來翻開一個文件,它的原型為:
FILE *fopen(char *filename, char *mode);
filename為文件名(包含文件途徑),mode為翻開方法,它們多是字符串。fopen() 會獲取文件信息,包含文件名、文件形態(tài)、以后讀寫地位等,并將這些信息保管到一個FILE類型的構(gòu)造體變量中,然后將該變量的地址前往。
FILE是在stdio.h頭文件中界說的一個構(gòu)造體,用來保管文件信息。
假如愿望接納 fopen() 的前往值,就需求界說一個 FILE 類型的指針。例如:
FILE *fp = ("demo.txt", "r");
表現(xiàn)以“只讀”方法翻開以后目次下的 demo.txt 文件,并使 fp 指向該文件,如許就可以經(jīng)過 fp 來操作 demo.txt 了。fp 平日被稱為文件指針。又如:
FILE *fp = fopen("D:\\demo.txt","rb");
表現(xiàn)以二進(jìn)制方法翻開 D 盤下的 demo.txt 文件,許可讀和寫。
翻開方法(mode)有多種,見下表:
翻開方法 | 闡明 |
---|---|
r | 以只讀方法翻開文件,只許可讀取,不許可寫入。該文件必需存在。 |
r+ | 以讀/寫方法翻開文件,許可讀取和寫入。該文件必需存在。 |
rb+ | 以讀/寫方法翻開一個二進(jìn)制文件,許可讀/寫數(shù)據(jù)。 |
rt+ | 以讀/寫方法翻開一個文本文件,許可讀和寫。 |
w | 以只寫方法翻開文件,若文件存在則長度清為0,即該文件內(nèi)容消逝,若不存在則創(chuàng)立該文件。 |
w+ | 以讀/寫方法翻開文件,若文件存在則文件長度清為零,即該文件內(nèi)容會消逝。若文件不存在則樹立該文件。 |
a | 以追加的方法翻開只寫文件。若文件不存在,則會樹立該文件,假如文件存在,寫入的數(shù)據(jù)會被加到文件尾,即文件本來的內(nèi)容會被保存(EOF符保存)。 |
a+ | 以追加方法翻開可讀/寫的文件。若文件不存在,則會樹立該文件,假如文件存在,則寫入的數(shù)據(jù)會被加到文件尾后,即文件本來的內(nèi)容會被保存(本來的EOF符 不保存)。 |
wb | 以只寫方法翻開或新建一個二進(jìn)制文件,只許可寫數(shù)據(jù)。 |
wb+ | 以讀/寫方法翻開或樹立一個二進(jìn)制文件,許可讀和寫。 |
wt+ | 以讀/寫方法翻開或樹立一個文本文件,許可讀寫。 |
at+ | 以讀/寫方法翻開一個文本文件,許可讀或在文本末追加數(shù)據(jù)。 |
ab+ | 以讀/寫方法翻開一個二進(jìn)制文件,許可讀或在文件末追加數(shù)據(jù)。 |
文本文件和二進(jìn)制文件的差別請檢查:C言語fopen()翻開文本文件與二進(jìn)制文件的差別
1) 文件翻開方法由r、w、a、t、b、+ 六個字符拼成,各字符的寄義是:
r(read):讀
w(write):寫
a(append):追加
t(text):文本文件,可省略不寫
b(banary):二進(jìn)制文件
+:讀和寫
2) 假如沒有“b”字符,文件以文本方法翻開。
3) 凡用“r”翻開一個文件時,該文件必需曾經(jīng)存在。
4) 在翻開一個文件時,假如失足,fopen將前往一個空指針值NULL。在程序中可以用這一信息來判別能否完成翻開文件的任務(wù),并作響應(yīng)的處置。因而常用以下程序段翻開文件:
if( (fp=fopen("D:\\demo.txt","rb") == NULL ){ printf("Error on open D:\\demo.txt file!"); getch(); exit(1); }
這段程序的意義是,假如前往的指針為空,表現(xiàn)不克不及翻開D盤根目次下的 demo.txt 文件,并給出提醒信息“error on open D:\\demo.txt file!”。第3行g(shù)etch()的功用是從鍵盤輸出一個字符,但不在屏幕上顯示。在這里,該行的感化是等候,只要當(dāng)用戶從鍵盤敲任一鍵時,程序才持續(xù)履行,因而用戶可應(yīng)用這個等候工夫瀏覽失足提醒。敲鍵后履行exit(1)加入程序。
5) 把一個文本文件讀入內(nèi)存時,要將ASCII碼轉(zhuǎn)換成二進(jìn)制碼,而把文件以文本方法寫入磁盤時,也要把二進(jìn)制碼轉(zhuǎn)換成ASCII碼,因而文本文件的讀寫要破費(fèi)較多的轉(zhuǎn)換工夫。對二進(jìn)制文件的讀寫不存在這種轉(zhuǎn)換。
6) 規(guī)范輸出文件 stdin(鍵盤)、規(guī)范輸入文件 stdout(顯示器)、規(guī)范毛病文件 stderr(顯示器)是由零碎翻開的,可直接運(yùn)用。
文件一旦運(yùn)用終了,應(yīng)當(dāng)用fclose()函數(shù)把文件封閉,以釋放相干資本,防止數(shù)據(jù)喪失。fclose() 的原型為:
int fclose(FILE *fp);
fp 為文件指針。例如:
fclose(fp);
文件正常封閉時,fclose() 的前往值為0,假如前往非零值則表現(xiàn)有毛病發(fā)作。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。