一、標(biāo)準(zhǔn)文件的讀寫(xiě)
1.文件的打開(kāi)fopen()
文件的打開(kāi)操作表示將給用戶指定的文件在內(nèi)存分配一個(gè)FILE結(jié)構(gòu)區(qū),并將該結(jié)構(gòu)的指針?lè)祷亟o用戶程序,以后用戶程序就可用此FILE指針來(lái)實(shí)現(xiàn)對(duì)指定文件的存取操作了。當(dāng)使用打開(kāi)函數(shù)時(shí),必須給出文件名、文件操作方式(讀、寫(xiě)或讀寫(xiě)),如果該文件名不存在,就意味著建立(只對(duì)寫(xiě)文件而言,對(duì)讀文件則出錯(cuò)),并將文件指針指向文件開(kāi)頭。若已有一個(gè)同名文件存在,則刪除該文件,若無(wú)同名文件,則建立該文件,并將文件指針指向文件開(kāi)頭。
fopen(char *filename,char *type);
其中*filename是要打開(kāi)文件的文件名指針,一般用雙引號(hào)括起來(lái)的文件名表示,也可使用雙反斜杠隔開(kāi)的路徑名。而*type參數(shù)表示了對(duì)打開(kāi)文件的操作方式。其可采用的操作方式如下:
方式 含義
r 打開(kāi),只讀
w 打開(kāi),文件指針指到頭,只寫(xiě)
a 打開(kāi),指向文件尾,在已存在文件中追加
rb 打開(kāi)一個(gè)二進(jìn)制文件,只讀
wb 打開(kāi)一個(gè)二進(jìn)制文件,只寫(xiě)
ab 打開(kāi)一個(gè)二進(jìn)制文件,進(jìn)行追加
r+ 以讀/寫(xiě)方式打開(kāi)一個(gè)已存在的文件
w+ 以讀/寫(xiě)方式建立一個(gè)新的文本文件
a+ 以讀/寫(xiě)方式打開(kāi)一個(gè)文件文件進(jìn)行追加
rb+ 以讀/寫(xiě)方式打開(kāi)一個(gè)二進(jìn)制文件
wb+ 以讀/寫(xiě)方式建立一個(gè)新的二進(jìn)制文件
ab+ 以讀/寫(xiě)方式打開(kāi)一個(gè)二進(jìn)制文件進(jìn)行追加
當(dāng)用fopen(0成功的打開(kāi)一個(gè)文件時(shí),該函數(shù)將返回一個(gè)FILE指針,如果文件打開(kāi)失敗,將返回一個(gè)NULL指針。如想打開(kāi)test文件,進(jìn)行寫(xiě):
FILE *fp;
if((fp=fopen(test,w))==NULL)
{
printf(File cannot be opened\n);
exit();
}
else
printf(File opened for writing\n);
……
fclose(fp);
DOS操作系統(tǒng)對(duì)同時(shí)打開(kāi)的文件數(shù)目是有限制的,缺省值為5,可以通過(guò)修改CONFIG.SYS文件改變這個(gè)設(shè)置。
2.關(guān)閉文件函數(shù)fclose()
文件操作完成后,必須要用fclose()函數(shù)進(jìn)行關(guān)閉,這是因?yàn)閷?duì)打開(kāi)的文件進(jìn)行寫(xiě)入時(shí),若文件緩沖區(qū)的空間未被寫(xiě)入的內(nèi)容填滿,這些內(nèi)容不會(huì)寫(xiě)到打開(kāi)的文件中去而丟失。只有對(duì)打開(kāi)的文件進(jìn)行關(guān)閉操作時(shí),停留在文件緩沖區(qū)的內(nèi)容才能寫(xiě)到該文件中去,從而使文件完整。再者一旦關(guān)閉了文件,該文件對(duì)應(yīng)的FILE結(jié)構(gòu)將被釋放,從而使關(guān)閉的文件得到保護(hù),因?yàn)檫@時(shí)對(duì)該文件的存取操作將不會(huì)進(jìn)行。文件的關(guān)閉也意味著釋放了該文件的緩沖區(qū)。
int fclose(FILE *stream);
它表示該函數(shù)將關(guān)閉FILE指針對(duì)應(yīng)的文件,并返回一個(gè)整數(shù)值。若成功地關(guān)閉了文件,則返回一個(gè)0值,否則返回一個(gè)非0值。常用以下方法進(jìn)行測(cè)試:
if(fclose(fp)!=0)
{
printf(File cannot be closed\n);
exit(1);
}
else
printf(File is now closed\n);
當(dāng)打開(kāi)多個(gè)文件進(jìn)行操作,而又要同時(shí)關(guān)閉時(shí),可采用fcloseall()函數(shù),它將關(guān)閉所有在程序中打開(kāi)的文件。
int fcloseall();
該函數(shù)將關(guān)閉所有已打開(kāi)的文件,將各文件緩沖區(qū)未裝滿的內(nèi)容寫(xiě)到相應(yīng)的文件中去,接著釋放這些緩沖區(qū),并返回關(guān)閉文件的數(shù)目。如關(guān)閉了4個(gè)文件,則當(dāng)執(zhí)行:
n=fcloseall();
時(shí),n應(yīng)為4。
相關(guān)推薦:計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言教程匯總計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言常見(jiàn)知識(shí)點(diǎn)總結(jié)
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |