檔案操作函式

2021-05-23 06:49:10 字數 4670 閱讀 5851

1,

feof(檢查檔案流是否讀到了檔案尾)

相關函式 fopen,fgetc,fgets,fread

表頭檔案 #include

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

函式說明 feof()用來偵測是否讀取到了檔案尾,尾數stream為fopen()所返回之檔案指標。如果已到檔案尾則返回非零值,其他情況返回0。

返回值 返回非零值代表已到達檔案尾

2,fflush(更新緩衝區)

相關函式 write,fopen,fclose,setbuf

表頭檔案 #include

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

函式說明 fflush()會強迫將緩衝區內的資料寫回引數stream指定的檔案中。如果引數stream為null,fflush()會將所有開啟的檔案資料更新。

返回值 成功返回0,失敗返回eof,錯誤**存於errno中。

錯誤** ebadf 引數stream 指定的檔案未被開啟,或開啟狀態為唯讀。其它錯誤**參考write()。

3, fgetc(由檔案中讀取乙個字元)

相關函式 open,fread,fscanf,getc

表頭檔案 include

定義函式 nt fgetc(file * stream);

函式說明 fgetc()從引數stream所指的檔案中讀取乙個字元。若讀到檔案尾而無資料時便返回eof。

返回值 getc()會返回讀取到的字元,若返回eof則表示到了檔案尾。

範例

#includemain()

4, fgets(由檔案中讀取一字串)

相關函式 open,fread,fscanf,getc

表頭檔案 include

定義函式 har * fgets(char * s,int size,file * stream);

函式說明 fgets()用來從引數stream所指的檔案內讀入字元並存到引數s所指的記憶體空間,直到出現換行字元、讀到檔案尾或是已讀了size-1個字元為止,最後會加上null作為字串結束。

返回值 gets()若成功則返回s指標,返回null則表示有錯誤發生。

fputs(將一指定的字串寫入檔案內)

相關函式 fopen,fwrite,fscanf,fputc,putc

表頭檔案 #include

定義函式 int fputs(const char * s,file * stream);

函式說明 fputs()用來將引數s所指的字串寫入到引數stream所指的檔案內。

返回值 若成功則返回寫出的字元個數,返回eof則表示有錯誤發生。

#includemain()

執行 this is a test /*輸入*/

this is a test /*輸出*/

5, 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數目。

範例

#include#define nmemb 3

struct test

s[nmemb];

int main()

執行

name[0]=linux! size[0]=6

name[1]=freebsd! size[1]=8

name[2]=windows2000 size[2]=11

6,
freopen(開啟檔案)

相關函式 fopen,fclose

表頭檔案 #include

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

函式說明 引數path字串包含欲開啟的檔案路徑及檔名,引數mode請參考fopen()說明。引數stream為已開啟的檔案指標。freopen()會將原stream所開啟的檔案流關閉,然後開啟引數path的檔案。

7, ftell和fseek:

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

相關函式 fseek,rewind,fgetpos,fsetpos

表頭檔案 #include

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

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

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

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

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()來取得目前讀寫的位置。

範例

#includemain()

執行 offset = 5

offset =0

offset=10

8,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數目。

範例

#include#define set_s (x,y) 

#define nmemb 3

struct test

s[nmemb];

main()

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

相關函式 fseek,ftell,fgetpos,fsetpos

表頭檔案 #include

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

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

10,setbuf和setbuffer:

setbuf(設定檔案流的緩衝區)

相關函式 setbuffer,setlinebuf,setvbuf

表頭檔案 #include

定義函式 void setbuf(file * stream,char * buf);

函式說明 在開啟檔案流後,讀取內容之前,呼叫setbuf()可以用來設定檔案流的緩衝區。引數stream為指定的檔案流,引數buf指向自定的緩衝區起始位址。如果引數buf為null指標,則為無緩衝io。setbuf()相當於呼叫:setvbuf(stream,buf,buf?_iofbf:_ionbf,bufsiz)

setbuffer(設定檔案流的緩衝區)

相關函式 setlinebuf,setbuf,setvbuf

表頭檔案 #include

定義函式 void setbuffer(file * stream,char * buf,size_t size);

函式說明 在開啟檔案流後,讀取內容之前,呼叫setbuffer()可用來設定檔案流的緩衝區。

引數stream為指定的檔案流,引數buf指向自定的緩衝區起始位址,引數size為緩衝區大小。

檔案操作函式

1 檔案測試函式 2 檔案操作 新建檔案 fopen filename,w 以 寫 的方式開啟乙個不存在的檔案,就會新建該檔案 檔案刪除 unlink 檔案複製 copy filename,aaa bb.txt 盡量使用 和相對路徑,因為linux只認 也沒有磁碟分割槽,而windows 和 都認 ...

檔案操作函式

fopenfclose函式 系統需要在記憶體中為每個讀寫的檔案開闢一段快取,快取中儲存檔案資訊的是file結構體,開啟檔案時就會獲得指向file的指標。為什麼要用快取呢,因為硬碟讀取時很慢的,機械硬碟的讀寫時間都是毫秒級,而記憶體讀寫是納秒級的,差了一百萬倍。函式原型為file fopen cons...

檔案操作函式

1.什麼是檔案 磁碟上的檔案是檔案。但是在程式設計中,我們一般談的檔案有兩種 程式檔案 資料檔案 1 程式檔案 包括源程式檔案 字尾為.c 目標檔案 windows環境字尾為.obj 可執行程式 windows環境字尾 為.exe 2 資料檔案 檔案的內容不一定是程式,而是程式執行時讀寫的資料,比如...