C語言檔案操作函式

2021-07-05 05:54:05 字數 3240 閱讀 2459

1.fopen(開啟檔案)

相關函式 open,fclose

表頭檔案 #include

定義函式 file * fopen(const char * path,const char * mode);

函式說明 引數path字串包含欲開啟的檔案路徑及檔名,引數mode字串則代表著流形態。

mode有下列幾種形態字串:

r 開啟唯讀檔案,該檔案必須存在。

r+ 開啟可讀寫的檔案,該檔案必須存在。

w 開啟只寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失。若檔案不存在則建立該檔案。

w+ 開啟可讀寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失。若檔案不存在則建立該檔案。

a 以附加的方式開啟只寫檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾,即檔案原先的內容會被保留。

a+ 以附加方式開啟可讀寫的檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾後,即檔案原先的內容會被保留。

上述的形態字串都可以再加乙個b字元,如rb、w+b或ab+等組合,加入b 字元用來告訴函式庫開啟的檔案為二進位制檔案,而非純文字檔案。不過在posix系統,包含linux都會忽略該字元。由fopen()所建立的新檔案會具有s_irusr|s_iwusr|s_irgrp|s_iwgrp|s_iroth|s_iwoth(0666)許可權,此檔案許可權也會參考umask值。

返回值 檔案順利開啟後,指向該流的檔案指標就會被返回。若果檔案開啟失敗則返回null,並把錯誤**存在errno 中。

附加說明 一般而言,開檔案後會作一些檔案讀取或寫入的動作,若開檔案失敗,接下來的讀寫動作也無法順利進行,所以在fopen()後請作錯誤判斷及處理。

2.fseek(移動檔案流的讀寫位置)

相關函式 rewind,ftell,fgetpos,fsetpos,lseek

表頭檔案 #include

定義函式 int fseek(file * stream,long offset,int whence);

函式說明 fseek()用來移動檔案流的讀寫位置。引數stream為已開啟的檔案指標,引數offset為根據引數whence來移動讀寫位置的位移數。

引數 whence為下列其中一種:

seek_set從距檔案開頭offset位移量為新的讀寫位置。seek_cur 以目前的讀寫位置往後增加offset個位移量。

seek_end將讀寫位置指向檔案尾後再增加offset個位移量。

當whence值為seek_cur 或seek_end時,引數offset允許負值的出現。

下列是較特別的使用方式:

1) 欲將讀寫位置移動到檔案開頭時:fseek(file *stream,0,seek_set);

2) 欲將讀寫位置移動到檔案尾時:fseek(file *stream,0,0seek_end);

返回值 當呼叫成功時則返回0,若有錯誤則返回-1,errno會存放錯誤**。

附加說明 fseek()不像lseek()會返回讀寫位置,因此必須使用ftell()來取得目前讀寫的位置。

3.ftell(取得檔案流的讀取位置)

相關函式 fseek,rewind,fgetpos,fsetpos

表頭檔案 #include

定義函式 long ftell(file * stream);

函式說明 ftell()用來取得檔案流目前的讀寫位置。引數stream為已開啟的檔案指標。

返回值 當呼叫成功時則返回目前的讀寫位置,若有錯誤則返回-1,errno會存放錯誤**。

錯誤** ebadf 引數stream無效或可移動讀寫位置的檔案流。

範例 參考fseek()。

4.fwrite(將資料寫至檔案流)

相關函式 fopen,fread,fseek,fscanf

表頭檔案 #include

定義函式 size_t fwrite(const void * ptr,size_t size,size_t nmemb,file * stream);

函式說明 fwrite()用來將資料寫入檔案流中。引數stream為已開啟的檔案指標,引數ptr 指向欲寫入的資料位址,總共寫入的字元數以引數size*nmemb來決定。fwrite()會返回實際寫入的nmemb數目。

返回值 返回實際寫入的nmemb數目。

5.rewind(重設檔案流的讀寫位置為檔案開頭)

相關函式 fseek,ftell,fgetpos,fsetpos

表頭檔案 #include

定義函式 void rewind(file * stream);

函式說明 rewind()用來把檔案流的讀寫位置移至檔案開頭。引數stream為已開啟的檔案指標。此函式相當於呼叫fseek(stream,0,seek_set)。

返回值範例 參考fseek()

6.fread(從檔案流讀取資料)

相關函式 fopen,fwrite,fseek,fscanf

表頭檔案 #include

定義函式 size_t fread(void * ptr,size_t size,size_t nmemb,file * stream);

函式說明 fread()用來從檔案流中讀取資料。引數stream為已開啟的檔案指標,引數ptr 指向欲存放讀取進來的資料空間,讀取的字元數以引數size*nmemb來決定。fread()會返回實際讀取到的nmemb數目,如果此值比引數nmemb 來得小,則代表可能讀到了檔案尾或有錯誤發生,這時必須用feof()或ferror()來決定發生什麼情況。

返回值 返回實際讀取到的nmemb數目。

7.fclose(關閉檔案)

相關函式 close,fflush,fopen,setbuf

表頭檔案 #include

定義函式 int fclose(file * stream);

函式說明 fclose()用來關閉先前fopen()開啟的檔案。此動作會讓緩衝區內的資料寫入檔案中,並釋放系統所提供的檔案資源。

返回值 若關檔案動作成功則返回0,有錯誤發生時則返回eof並把錯誤**存到errno。

錯誤** ebadf表示引數stream非已開啟的檔案。

範例 請參考fopen()。

參考:

C語言檔案操作函式

有時候在除錯程式需要進行大量資料的輸入輸出時,如何還是採用scanf printf 的方式進行,那就苦逼了。萬一資料上有一些小改動,那就更苦逼了,所以還是用檔案來幫我們記錄下來,這樣在分析的時候才能更方便一些。再說了,什麼地方都需要用到檔案,所以這個也是個重要的操作啊!需要包含標頭檔案 來乙個小示例...

c語言檔案操作函式

1.fopen file fopen const char filename,const char mode filename檔案路徑 檔名,mode,檔案開啟方式。返回值,成功,返回檔案指標,失敗,返回null。mode的值 r rb 唯讀方式開啟乙個文字檔案,檔案不存在,報錯 w wb 寫方式開...

C語言檔案操作函式

1 int fgetc file fp 從檔案中讀乙個字元2 int fputc int c,file fp 向檔案寫入乙個字元 3 char fgets char s,int size,file fp 從檔案中讀取若干個字元4 int fputs const char str,file fp 把s...