C語言中的fopen函式

2021-09-12 17:52:12 字數 2689 閱讀 3752

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,並把錯誤 存...