函數(shù)功能: 打開一個(gè)文件
函數(shù)原型:FILE * fopen(const char * path,const char * mode);
相關(guān)函數(shù):open,fclose,fopen_s?,_wfopen
所需庫: <stdio.h>
返回值: 文件順利打開后,指向該流的文件指針就會被返回。若果文件打開失敗則返回NULL,并把錯(cuò)誤代碼存在errno 中。
一般而言,打開文件后會作一些文件讀取或?qū)懭氲膭?dòng)作,若打開文件失敗,接下來的讀寫動(dòng)作也無法順利進(jìn)行,所以在fopen()后請作錯(cuò)誤判斷及處理。
參數(shù)說明:
參數(shù)path字符串包含欲打開的文件路徑及文件名,參數(shù)mode字符串則代表著流形態(tài)。
mode有下列幾種形態(tài)字符串:
r:打開只讀文件,該文件必須存在。
r+:打開可讀寫的文件,該文件必須存在。
rb+:讀寫打開一個(gè)二進(jìn)制文件,只允許讀寫數(shù)據(jù)。
rt+:讀寫打開一個(gè)文本文件,允許讀和寫。
w:打開只寫文件,若文件存在則文件長度清為0,即該文件內(nèi)容會消失。若文件不存在則建立該文件。
w+:打開可讀寫文件,若文件存在則文件長度清為零,即該文件內(nèi)容會消失。若文件不存在則建立該文件。
a:以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數(shù)據(jù)會被加到文件尾,即文件原先的內(nèi)容會被保留。(EOF符保留)
a+:以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數(shù)據(jù)會被加到文件尾后,即文件原先的內(nèi)容會被保留。 (原來的EOF符不保留)
wb:只寫打開或新建一個(gè)二進(jìn)制文件;只允許寫數(shù)據(jù)。
wb+:讀寫打開或建立一個(gè)二進(jìn)制文件,允許讀和寫。
wt+:讀寫打開或著建立一個(gè)文本文件;允許讀寫。
at+:讀寫打開一個(gè)文本文件,允許讀或在文本末追加數(shù)據(jù)。
ab+:讀寫打開一個(gè)二進(jìn)制文件,允許讀或在文件末追加數(shù)據(jù)。
上述的形態(tài)字符串都可以再加一個(gè)b字符,如rb、w+b或ab+等組合,加入b 字符用來告訴函數(shù)庫打開的文件為二進(jìn)制文件,而非純文字文件。不過在POSIX系統(tǒng),包含Linux都會忽略該字符。由fopen()所建立的新文件會具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)權(quán)限,此文件權(quán)限也會參考umask 值。
有些C編譯系統(tǒng)可能不完全提供所有這些功能,有的C版本不用"r+","w+","a+",而用"rw","wr","ar"等,讀者注意所用系統(tǒng)的規(guī)定。
本站文章版權(quán)歸原作者及原出處所有 。內(nèi)容為作者個(gè)人觀點(diǎn), 并不代表本站贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé),本站只提供參考并不構(gòu)成任何投資及應(yīng)用建議。本站是一個(gè)個(gè)人學(xué)習(xí)交流的平臺,網(wǎng)站上部分文章為轉(zhuǎn)載,并不用于任何商業(yè)目的,我們已經(jīng)盡可能的對作者和來源進(jìn)行了通告,但是能力有限或疏忽,造成漏登,請及時(shí)聯(lián)系我們,我們將根據(jù)著作權(quán)人的要求,立即更正或者刪除有關(guān)內(nèi)容。本站擁有對此聲明的最終解釋權(quán)。