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 3name[0]=linux! size[0]=6struct test
s[nmemb];
int main()
執行
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 資料檔案 檔案的內容不一定是程式,而是程式執行時讀寫的資料,比如...