1、讀寫開啟一個二進位制檔案,只允許讀寫資料。
2、函式原型:FILE * fopen(const char * path,const char * mode);
相關函式:open,fclose,fopen_s,_wfopen
返回值:檔案順利開啟後,指向該流的檔案指標就會被返回。如果檔案開啟失敗則返回NULL,並把錯誤程式碼存在errno 中
3、引數說明:
4、引數path字串包含欲開啟的檔案路徑及檔名,引數mode字串則代表著流形態。
r 以只讀方式開啟檔案,該檔案必須存在。
r+ 以可讀寫方式開啟檔案,該檔案必須存在。
rb+ 讀寫開啟一個二進位制檔案,允許讀寫資料,檔案必須存在。
w 開啟只寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失。若檔案不存在則建立該檔案。
w+ 開啟可讀寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失。若檔案不存在則建立該檔案。
a 以附加的方式開啟只寫檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾,即檔案原先的內容會被保留。(EOF符保留)
a+ 以附加方式開啟可讀寫的檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾後,即檔案原先的內容會被保留。 (原來的EOF符不保留)
wb 只寫開啟或新建一個二進位制檔案;只允許寫資料。
wb+ 讀寫開啟或建立一個二進位制檔案,允許讀和寫。
ab+ 讀寫開啟一個二進位制檔案,允許讀或在檔案末追加資料。
wx 建立文字檔案,只允許寫入資料.[C11]
wbx 建立一個二進位制檔案,只允許寫入資料.[C11]
w+x 建立一個文字檔案,允許讀寫.[C11]
wb+x 建立一個二進位制檔案,允許讀寫.[C11]
w+bx 和"wb+x"相同[C11]
以x結尾的模式為獨佔模式,檔案已存在或者無法建立(一般是路徑不正確)都會導致fopen失敗.檔案以作業系統支援的獨佔模式開啟.[C11]
上述的形態字串都可以再加一個b字元,如rb、w+b或ab+等組合,加入b 字元用來告訴函式庫以二進位制模式開啟檔案。如果不加b,表示預設加了t,即rt,wt,其中t表示以文字模式開啟檔案。由fopen()所建立的新檔案會具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)許可權,此檔案許可權也會參考umask值。
有些C編譯系統可能不完全提供所有這些功能,有的C版本不用"r+","w+","a+",而用"rw","wr","ar"等,讀者注意所用系統的規定。
1、讀寫開啟一個二進位制檔案,只允許讀寫資料。
2、函式原型:FILE * fopen(const char * path,const char * mode);
相關函式:open,fclose,fopen_s,_wfopen
返回值:檔案順利開啟後,指向該流的檔案指標就會被返回。如果檔案開啟失敗則返回NULL,並把錯誤程式碼存在errno 中
3、引數說明:
4、引數path字串包含欲開啟的檔案路徑及檔名,引數mode字串則代表著流形態。
r 以只讀方式開啟檔案,該檔案必須存在。
r+ 以可讀寫方式開啟檔案,該檔案必須存在。
rb+ 讀寫開啟一個二進位制檔案,允許讀寫資料,檔案必須存在。
w 開啟只寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失。若檔案不存在則建立該檔案。
w+ 開啟可讀寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失。若檔案不存在則建立該檔案。
a 以附加的方式開啟只寫檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾,即檔案原先的內容會被保留。(EOF符保留)
a+ 以附加方式開啟可讀寫的檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾後,即檔案原先的內容會被保留。 (原來的EOF符不保留)
wb 只寫開啟或新建一個二進位制檔案;只允許寫資料。
wb+ 讀寫開啟或建立一個二進位制檔案,允許讀和寫。
ab+ 讀寫開啟一個二進位制檔案,允許讀或在檔案末追加資料。
wx 建立文字檔案,只允許寫入資料.[C11]
wbx 建立一個二進位制檔案,只允許寫入資料.[C11]
w+x 建立一個文字檔案,允許讀寫.[C11]
wb+x 建立一個二進位制檔案,允許讀寫.[C11]
w+bx 和"wb+x"相同[C11]
以x結尾的模式為獨佔模式,檔案已存在或者無法建立(一般是路徑不正確)都會導致fopen失敗.檔案以作業系統支援的獨佔模式開啟.[C11]
上述的形態字串都可以再加一個b字元,如rb、w+b或ab+等組合,加入b 字元用來告訴函式庫以二進位制模式開啟檔案。如果不加b,表示預設加了t,即rt,wt,其中t表示以文字模式開啟檔案。由fopen()所建立的新檔案會具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)許可權,此檔案許可權也會參考umask值。
有些C編譯系統可能不完全提供所有這些功能,有的C版本不用"r+","w+","a+",而用"rw","wr","ar"等,讀者注意所用系統的規定。