fopen
函式原型:file * fopen(const char * path, const char * mode);
相關函式:open, fclose, fopen_s, _wfopen
返回值:檔案順利開啟後,指向該流的檔案指標就會被返回。如果檔案開啟失敗則返回 null,並把錯誤**存在 error 中。
函式簡介
函式原型:file * fopen(const char * path, const char * mode);
返回值:檔案順利開啟後,指向該流的檔案指標就會被返回。如果檔案開啟失敗則返回 null,並把錯誤**存在error中。
一般而言,開啟檔案後會做一些檔案讀取或寫入的動作,若開啟檔案失敗,接下來的讀寫動作也無法順利進行,所以一般在 fopen() 後作錯誤判斷及處理。
引數說明:
引數 path字串包含欲開啟的檔案路徑及檔名,引數 mode 字串則代表著流形態。
mode 有下列幾種形態字串:
字串說明
r以唯讀方式開啟檔案,該檔案必須存在。
r+以讀/寫方式開啟檔案,該檔案必須存在。
rb+以讀/寫方式開啟乙個二進位制檔案,只允許讀/寫資料。
rt+以讀/寫方式開啟乙個文字檔案,允許讀和寫。
w開啟只寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失;若檔案不存在則建立該檔案。
w+開啟可讀/寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失;若檔案不存在則建立該檔案。
a以附加的方式開啟只寫檔案。若檔案不存在,則會建立該檔案;如果檔案存在,則寫入的資料會被加到檔案尾後,即檔案原先的內容會被保留(eof 符保留)。
a+以附加方式開啟可讀/寫的檔案。若檔案不存在,則會建立該檔案,如果檔案存在,則寫入的資料會被加到檔案尾後,即檔案原先的內容會被保留(eof符不保留)。
wb以只寫方式開啟或新建乙個二進位制檔案,只允許寫資料。
wb+以讀/寫方式開啟或新建乙個二進位制檔案,允許讀和寫。
wt+以讀/寫方式開啟或新建乙個文字檔案,允許讀和寫。
at+以讀/寫方式開啟乙個文字檔案,允許讀或在文字末追加資料。
ab+以讀/寫方式開啟乙個二進位制檔案,允許讀或在檔案末追加資料。
以 x 結尾的模式為獨佔模式,檔案已存在或者無法建立(一般是路徑不正確)都會導致 fopen 失敗。檔案以作業系統支援的獨佔模式開啟。
上述的形態字串都可以再加乙個 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、在windows系統中,文字模式下,檔案以」\r\n"代表換行。若以文字模式開啟檔案,並用 fputs 等函式寫入換行符"\n"時,函式會自動在"\n"前面加上"\r"。即實際寫入檔案的是"\r\n"。
2、在類 unix/linux 系統中文字模式下,檔案以"\n"代表換行。所以 linux 系統中在文字模式和二進位制模式下並無區別。
開啟方式總結:各種開啟方式主要有三個方面的區別
1、開啟是否為二進位制檔案,用「b」標識。
2、讀寫的方式,有以下幾種:唯讀、只寫、讀寫、追加只寫、追加讀寫這幾種方式。
3、對檔案是否必 須存在、以及存在時是清空還是追加會有不同的響應。具體判斷如下圖。
程式示例
示例一#include
#define f_path 「d:\myfile\file.dat」
int main(void)
fclose(fp);
fp = null; / 需要指向空,否則會指向原開啟檔案位址 /
return 0;
}示例二
#include
#include / 為了使用exit() */
int main(void)
while ((ch[i] = getc(fp)) != eof)
fclose(fp); / 關閉檔案 /
fp = null; / 需要指向空,否則會指向原開啟檔案位址 */
return 0;
}注意!初學者往往會犯乙個錯誤,即在輸入檔名時不加字尾名,請注意加上!
示例三#include
file *stream, *stream2;
int main(void)
}/ all other files are closed: */
numclosed = _fcloseall();
printf(「number of files closed by _fcloseall: %u\n」, numclosed);}注意
在檔案操作時,需要注意以下幾點問題:
1、在定義檔案指標時,要將檔案指標指向空;如 file *fp = null;
2、在檔案操作完成後,需要將檔案關閉,一定要注意,否則會造成檔案所占用記憶體洩漏和在下次訪問檔案時出現問題。
3、檔案關閉後,需要將檔案指標指向空,這樣做會防止出現游離指標,而對整個工程造成不必要的麻煩;如:fp = null;
C語言中fopen 函式的使用方法
c語言中fopen 的基本用法 file fopen const char filename,const char mode fopen函式返回新開啟檔案的檔案指標 如果此檔案不能開啟,則返回null指標。include 乙個簡單的 是這麼建立的 模式描述 檔案可否存在 r 開啟檔案僅供讀取 必須存...
c語言fopen函式
c語言函式fopen 函式簡介 1.函式功能 開啟乙個檔案 2.函式原型 file fopen const char path,const char mode 3.相關函式 open,fclose,fopen s 1 wfopen 所需庫 4.返回值 檔案順利開啟後,指向該流的檔案指標就會被返回。如...
C語言函式fopen
函式功能 開啟乙個檔案 函式原型 file fopen const char path,const char mode open,fclose,fopen s 引 wfopen 所需庫 stdio.h 返回值 檔案順利開啟後,指向該流的檔案指標就會被返回。如果檔案開啟失敗則返回null,並把錯誤 存...