C語(yǔ)言文件操作函數(shù)大全.doc_第1頁(yè)
C語(yǔ)言文件操作函數(shù)大全.doc_第2頁(yè)
C語(yǔ)言文件操作函數(shù)大全.doc_第3頁(yè)
C語(yǔ)言文件操作函數(shù)大全.doc_第4頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

#打印了好好學(xué)習(xí)#歪詩(shī)協(xié)會(huì)QQ978107204C語(yǔ)言文件操作函數(shù)大全5 相關(guān)函數(shù) feof 表頭文件 #include 定義函數(shù) void clearerr(FILE * stream); 函數(shù)說(shuō)明 clearerr()清除參數(shù)stream指定的文件流所使用的錯(cuò)誤旗標(biāo)。 返回值 fclose(關(guān)閉文件) 相關(guān)函數(shù) close,fflush,fopen,setbuf 表頭文件 #include 定義函數(shù) int fclose(FILE * stream); 函數(shù)說(shuō)明 fclose()用來(lái)關(guān)閉先前fopen()打開(kāi)的文件。此動(dòng)作會(huì)讓緩沖區(qū)內(nèi)的數(shù)據(jù)寫入文件中,并釋放系統(tǒng)所提供的文件資源。 返回值 若關(guān)文件動(dòng)作成功則返回0,有錯(cuò)誤發(fā)生時(shí)則返回EOF并把錯(cuò)誤代碼存到errno。 錯(cuò)誤代碼 EBADF表示參數(shù)stream非已打開(kāi)的文件。 范例 請(qǐng)參考fopen()。 fdopen(將文件描述詞轉(zhuǎn)為文件指針) 相關(guān)函數(shù) fopen,open,fclose 表頭文件 #include 定義函數(shù) FILE * fdopen(int fildes,const char * mode); 函數(shù)說(shuō)明 fdopen()會(huì)將參數(shù)fildes 的文件描述詞,轉(zhuǎn)換為對(duì)應(yīng)的文件指針后返回。參數(shù)mode 字符串則代表著文件指針的流形態(tài),此形態(tài)必須和原先文件描述詞讀寫模式相同。關(guān)于mode 字符串格式請(qǐng)參考fopen()。 返回值 轉(zhuǎn)換成功時(shí)返回指向該流的文件指針。失敗則返回NULL,并把錯(cuò)誤代碼存在errno中。 范例 #include main() FILE * fp =fdopen(0,”w+”); fprintf(fp,”%sn”,”hello!”); fclose(fp); 執(zhí)行 hello! feof(檢查文件流是否讀到了文件尾) 相關(guān)函數(shù) fopen,fgetc,fgets,fread 表頭文件 #include 定義函數(shù) int feof(FILE * stream); 函數(shù)說(shuō)明 feof()用來(lái)偵測(cè)是否讀取到了文件尾,尾數(shù)stream為fopen()所返回之文件指針。如果已到文件尾則返回非零值,其他情況返回0。 返回值 返回非零值代表已到達(dá)文件尾。 fflush(更新緩沖區(qū)) 相關(guān)函數(shù) write,fopen,fclose,setbuf 表頭文件 #include 定義函數(shù) int fflush(FILE* stream); 函數(shù)說(shuō)明 fflush()會(huì)強(qiáng)迫將緩沖區(qū)內(nèi)的數(shù)據(jù)寫回參數(shù)stream指定的文件中。如果參數(shù)stream為NULL,fflush()會(huì)將所有打開(kāi)的文件數(shù)據(jù)更新。 返回值 成功返回0,失敗返回EOF,錯(cuò)誤代碼存于errno中。 錯(cuò)誤代碼 EBADF 參數(shù)stream 指定的文件未被打開(kāi),或打開(kāi)狀態(tài)為只讀。其它錯(cuò)誤代碼參考write()。 fgetc(由文件中讀取一個(gè)字符) 相關(guān)函數(shù) open,fread,fscanf,getc 表頭文件 include 定義函數(shù) nt fgetc(FILE * stream); 函數(shù)說(shuō)明 fgetc()從參數(shù)stream所指的文件中讀取一個(gè)字符。若讀到文件尾而無(wú)數(shù)據(jù)時(shí)便返回EOF。 返回值 getc()會(huì)返回讀取到的字符,若返回EOF則表示到了文件尾。 范例 #include main() FILE *fp; int c; fp=fopen(“exist”,”r”); while(c=fgetc(fp)!=EOF) printf(“%c”,c); fclose(fp); fgets(由文件中讀取一字符串) 相關(guān)函數(shù) open,fread,fscanf,getc 表頭文件 include 定義函數(shù) har * fgets(char * s,int size,FILE * stream); 函數(shù)說(shuō)明 fgets()用來(lái)從參數(shù)stream所指的文件內(nèi)讀入字符并存到參數(shù)s所指的內(nèi)存空間,直到出現(xiàn)換行字符、讀到文件尾或是已讀了size-1個(gè)字符為止,最后會(huì)加上NULL作為字符串結(jié)束。 返回值 gets()若成功則返回s指針,返回NULL則表示有錯(cuò)誤發(fā)生。 范例 #include main() char s80; fputs(fgets(s,80,stdin),stdout); 執(zhí)行 this is a test /*輸入*/ this is a test /*輸出*/ fileno(返回文件流所使用的文件描述詞) 相關(guān)函數(shù) open,fopen 表頭文件 #include 定義函數(shù) int fileno(FILE * stream); 函數(shù)說(shuō)明 fileno()用來(lái)取得參數(shù)stream指定的文件流所使用的文件描述詞。 返回值 返回文件描述詞。 范例 #include main() FILE * fp; int fd; fp=fopen(“/etc/passwd”,”r”); fd=fileno(fp); printf(“fd=%dn”,fd); fclose(fp); 執(zhí)行 fd=3 fopen(打開(kāi)文件) 相關(guān)函數(shù) open,fclose 表頭文件 #include 定義函數(shù) FILE * fopen(const char * path,const char * mode); 函數(shù)說(shuō)明 參數(shù)path字符串包含欲打開(kāi)的文件路徑及文件名,參數(shù)mode字符串則代表著流形態(tài)。 mode有下列幾種形態(tài)字符串: r 打開(kāi)只讀文件,該文件必須存在。 r+ 打開(kāi)可讀寫的文件,該文件必須存在。 w 打開(kāi)只寫文件,若文件存在則文件長(zhǎng)度清為0,即該文件內(nèi)容會(huì)消失。若文件不存在則建立該文件。 w+ 打開(kāi)可讀寫文件,若文件存在則文件長(zhǎng)度清為零,即該文件內(nèi)容會(huì)消失。若文件不存在則建立該文件。 a 以附加的方式打開(kāi)只寫文件。若文件不存在,則會(huì)建立該文件,如果文件存在,寫入的數(shù)據(jù)會(huì)被加到文件尾,即文件原先的內(nèi)容會(huì)被保留。 a+ 以附加方式打開(kāi)可讀寫的文件。若文件不存在,則會(huì)建立該文件,如果文件存在,寫入的數(shù)據(jù)會(huì)被加到文件尾后,即文件原先的內(nèi)容會(huì)被保留。 上述的形態(tài)字符串都可以再加一個(gè)b字符,如rb、w+b或ab等組合,加入b 字符用來(lái)告訴函數(shù)庫(kù)打開(kāi)的文件為二進(jìn)制文件,而非純文字文件。不過(guò)在POSIX系統(tǒng),包含Linux都會(huì)忽略該字符。由fopen()所建立的新文件會(huì)具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)權(quán)限,此文件權(quán)限也會(huì)參考umask值。 返回值 文件順利打開(kāi)后,指向該流的文件指針就會(huì)被返回。若果文件打開(kāi)失敗則返回NULL,并把錯(cuò)誤代碼存在errno 中。 附加說(shuō)明 一般而言,開(kāi)文件后會(huì)作一些文件讀取或?qū)懭氲膭?dòng)作,若開(kāi)文件失敗,接下來(lái)的讀寫動(dòng)作也無(wú)法順利進(jìn)行,所以在fopen()后請(qǐng)作錯(cuò)誤判斷及處理。 范例 #include main() FILE * fp; fp=fopen(“noexist”,”a+”); if(fp= =NULL) return; fclose(fp); fputc(將一指定字符寫入文件流中) 相關(guān)函數(shù) fopen,fwrite,fscanf,putc 表頭文件 #include 定義函數(shù) int fputc(int c,FILE * stream); 函數(shù)說(shuō)明 fputc 會(huì)將參數(shù)c 轉(zhuǎn)為unsigned char 后寫入?yún)?shù)stream 指定的文件中。 返回值 fputc()會(huì)返回寫入成功的字符,即參數(shù)c。若返回EOF則代表寫入失敗。 范例 #include main() FILE * fp; char a26=”abcdefghijklmnopqrstuvwxyz”; int i; fp= fopen(“noexist”,”w”); for(i=0;i26;i+) fputc(a,fp); fclose(fp); fputs(將一指定的字符串寫入文件內(nèi)) 相關(guān)函數(shù) fopen,fwrite,fscanf,fputc,putc 表頭文件 #include 定義函數(shù) int fputs(const char * s,FILE * stream); 函數(shù)說(shuō)明 fputs()用來(lái)將參數(shù)s所指的字符串寫入到參數(shù)stream所指的文件內(nèi)。 返回值 若成功則返回寫出的字符個(gè)數(shù),返回EOF則表示有錯(cuò)誤發(fā)生。 范例 請(qǐng)參考fgets()。 fread(從文件流讀取數(shù)據(jù)) 相關(guān)函數(shù) fopen,fwrite,fseek,fscanf 表頭文件 #include 定義函數(shù) size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream); 函數(shù)說(shuō)明 fread()用來(lái)從文件流中讀取數(shù)據(jù)。參數(shù)stream為已打開(kāi)的文件指針,參數(shù)ptr 指向欲存放讀取進(jìn)來(lái)的數(shù)據(jù)空間,讀取的字符數(shù)以參數(shù)size*nmemb來(lái)決定。Fread()會(huì)返回實(shí)際讀取到的nmemb數(shù)目,如果此值比參數(shù)nmemb 來(lái)得小,則代表可能讀到了文件尾或有錯(cuò)誤發(fā)生,這時(shí)必須用feof()或ferror()來(lái)決定發(fā)生什么情況。 返回值 返回實(shí)際讀取到的nmemb數(shù)目。 附加說(shuō)明 范例 #include #define nmemb 3 struct test char name20; int size; snmemb; int main() FILE * stream; int i; stream = fopen(“/tmp/fwrite”,”r”); fread(s,sizeof(struct test),nmemb,stream); fclose(stream); for(i=0;inmemb;i+) printf(“name%d=%-20s:size%d=%dn”,i,,i,s.size); 執(zhí)行 name0=Linux! size0=6 name1=FreeBSD! size1=8 name2=Windows2000 size2=11 freopen(打開(kāi)文件) 相關(guān)函數(shù) fopen,fclose 表頭文件 #include 定義函數(shù) FILE * freopen(const char * pathconst char * mode,FILE * stream); 函數(shù)說(shuō)明 參數(shù)path字符串包含欲打開(kāi)的文件路徑及文件名,參數(shù)mode請(qǐng)參考fopen()說(shuō)明。參數(shù)stream為已打開(kāi)的文件指針。Freopen()會(huì)將原stream所打開(kāi)的文件流關(guān)閉,然后打開(kāi)參數(shù)path的文件。#include main() FILE * fp; fp=fopen(“/etc/passwd”,”r”); fp=freopen(“/etc/group”,”r”,fp); fclose(fp); fseek(移動(dòng)文件流的讀寫位置) 相關(guān)函數(shù) rewind,ftell,fgetpos,fsetpos,lseek 表頭文件 #include 定義函數(shù) int fseek(FILE * stream,long offset,int whence); 函數(shù)說(shuō)明 fseek()用來(lái)移動(dòng)文件流的讀寫位置。參數(shù)stream為已打開(kāi)的文件指針,參數(shù)offset為根據(jù)參數(shù)whence來(lái)移動(dòng)讀寫位置的位移數(shù)。 參數(shù) whence為下列其中一種: SEEK_SET從距文件開(kāi)頭offset位移量為新的讀寫位置。SEEK_CUR 以目前的讀寫位置往后增加offset個(gè)位移量。 SEEK_END將讀寫位置指向文件尾后再增加offset個(gè)位移量。 當(dāng)whence值為SEEK_CUR 或SEEK_END時(shí),參數(shù)offset允許負(fù)值的出現(xiàn)。 下列是較特別的使用方式: 1) 欲將讀寫位置移動(dòng)到文件開(kāi)頭時(shí):fseek(FILE *stream,0,SEEK_SET); 2) 欲將讀寫位置移動(dòng)到文件尾時(shí):fseek(FILE *stream,0,0SEEK_END); 返回值 當(dāng)調(diào)用成功時(shí)則返回0,若有錯(cuò)誤則返回-1,errno會(huì)存放錯(cuò)誤代碼。 附加說(shuō)明 fseek()不像lseek()會(huì)返回讀寫位置,因此必須使用ftell()來(lái)取得目前讀寫的位置。 范例 #include main() FILE * stream; long offset; fpos_t pos; stream=fopen(“/etc/passwd”,”r”); fseek(stream,5,SEEK_SET); printf(“offset=%dn”,ftell(stream); rewind(stream); fgetpos(stream,&pos); printf(“offset=%dn”,pos); pos=10; fsetpos(stream,&pos); printf(“offset = %dn”,ftell(stream); fclose(stream); 執(zhí)行 offset = 5 offset =0 offset=10 ftell(取得文件流的讀取位置) 相關(guān)函數(shù) fseek,rewind,fgetpos,fsetpos 表頭文件 #include 定義函數(shù) long ftell(FILE * stream); 函數(shù)說(shuō)明 ftell()用來(lái)取得文件流目前的讀寫位置。參數(shù)stream為已打開(kāi)的文件指針。 返回值 當(dāng)調(diào)用成功時(shí)則返回目前的讀寫位置,若有錯(cuò)誤則返回-1,errno會(huì)存放錯(cuò)誤代碼。 錯(cuò)誤代碼 EBADF 參數(shù)stream無(wú)效或可移動(dòng)讀寫位置的文件流。 范例 參考fseek()。 fwrite(將數(shù)據(jù)寫至文件流) 相關(guān)函數(shù) fopen,fread,fseek,fscanf 表頭文件 #include 定義函數(shù) size_t fwrite(const void * ptr,size_t size,size_t nmemb,FILE * stream); 函數(shù)說(shuō)明 fwrite()用來(lái)將數(shù)據(jù)寫入文件流中。參數(shù)stream為已打開(kāi)的文件指針,參數(shù)ptr 指向欲寫入的數(shù)據(jù)地址,總共寫入的字符數(shù)以參數(shù)size*nmemb來(lái)決定。Fwrite()會(huì)返回實(shí)際寫入的nmemb數(shù)目。 返回值 返回實(shí)際寫入的nmemb數(shù)目。 范例 #include #define set_s (x,y) strcoy(,y);sx.size=strlen(y); #define nmemb 3 struct test char name20; int size; snmemb; main() FILE * stream; set_s(0,”Linux!”); set_s(1,”FreeBSD!”); set_s(2,”Windows2000.”); stream=fopen(“/tmp/fwrite”,”w”); fwrite(s,sizeof(struct test),nmemb,stream); fclose(stream); 執(zhí)行 參考fread()。 getc(由文件中讀取一個(gè)字符) 相關(guān)函數(shù) read,fopen,fread,fgetc 表頭文件 #include 定義函數(shù) int getc(FILE * stream); 函數(shù)說(shuō)明 getc()用來(lái)從參數(shù)stream所指的文件中讀取一個(gè)字符。若讀到文件尾而無(wú)數(shù)據(jù)時(shí)便返回EOF。雖然getc()與fgetc()作用相同,但getc()為宏定義,非真正的函數(shù)調(diào)用。 返回值 getc()會(huì)返回讀取到的字符,若返回EOF則表示到了文件尾。 范例 參考fgetc()。 getchar(由標(biāo)準(zhǔn)輸入設(shè)備內(nèi)讀進(jìn)一字符) 相關(guān)函數(shù) fopen,fread,fscanf,getc 表頭文件 #include 定義函數(shù) int getchar(void); 函數(shù)說(shuō)明 getchar()用來(lái)從標(biāo)準(zhǔn)輸入設(shè)備中讀取一個(gè)字符。然后將該字符從unsigned char轉(zhuǎn)換成int后返回。 返回值 getchar()會(huì)返回讀取到的字符,若返回EOF則表示有錯(cuò)誤發(fā)生。 附加說(shuō)明 getchar()非真正函數(shù),而是getc(stdin)宏定義。 范例 #include main() FILE * fp; int c,i; for(i=0li5;i+) c=getchar(); putchar(c); 執(zhí)行 1234 /*輸入*/ 1234 /*輸出*/ gets(由標(biāo)準(zhǔn)輸入設(shè)備內(nèi)讀進(jìn)一字符串) 相關(guān)函數(shù) fopen,fread,fscanf,fgets 表頭文件 #include 定義函數(shù) char * gets(char *s); 函數(shù)說(shuō)明 gets()用來(lái)從標(biāo)準(zhǔn)設(shè)備讀入字符并存到參數(shù)s所指的內(nèi)存空間,直到出現(xiàn)換行字符或讀到文件尾為止,最后加上NULL作為字符串結(jié)束。 返回值 gets()若成功則返回s指針,返回NULL則表示有錯(cuò)誤發(fā)生。 附加說(shuō)明 由于gets()無(wú)法知道字符串s的大小,必須遇到換行字符或文件尾才會(huì)結(jié)束輸入,因此容易造成緩沖溢出的安全性問(wèn)題。建議使用fgets()取代。 范例 參考fgets() mktemp(產(chǎn)生唯一的臨時(shí)文件名) 相關(guān)函數(shù) tmpfile 表頭文件 #include 定義函數(shù) char * mktemp(char * template); 函數(shù)說(shuō)明 mktemp()用來(lái)產(chǎn)生唯一的臨時(shí)文件名。參數(shù)template所指的文件名稱字符串中最后六個(gè)字符必須是XXXXXX。產(chǎn)生后的文件名會(huì)借字符串指針?lè)祷亍?返回值 文件順利打開(kāi)后,指向該流的文件指針就會(huì)被返回。如果文件打開(kāi)失敗則返回NULL,并把錯(cuò)誤代碼存在errno中。 附加說(shuō)明 參數(shù)template所指的文件名稱字符串必須聲明為數(shù)組,如: char template =”template-XXXXXX”; 不可用char * template=”template-XXXXXX”; 范例 #include main() char template =”template-XXXXXX”; mktemp(template); printf(“template=%sn”,template); putc(將一指定字符寫入文件中) 相關(guān)函數(shù) fopen,fwrite,fscanf,fputc 表頭文件 #include 定義函數(shù) int putc(int c,FILE * stream); 函數(shù)說(shuō)明 putc()會(huì)將參數(shù)c轉(zhuǎn)為unsigned char后寫入?yún)?shù)stream指定的文件中。雖然putc()與fputc()作用相同,但putc()為宏定義,非真正的函數(shù)調(diào)用。 返回值 putc()會(huì)返回寫入成功的字符,即參數(shù)c。若返回EOF則代表寫入失敗。 范例 參考fputc()。 putchar(將指定的字符寫到標(biāo)準(zhǔn)輸出設(shè)備) 相關(guān)函數(shù) fopen,fwrite,fscanf,fputc 表頭文件 #include 定義函數(shù) int putchar (int c); 函數(shù)說(shuō)明 putchar()用來(lái)將參數(shù)c字符寫到標(biāo)準(zhǔn)輸出設(shè)備。 返回值 putchar()會(huì)返回輸出成功的字符,即參數(shù)c。若返回EOF則代表輸出失敗。 附加說(shuō)明 putchar()非真正函數(shù),而是putc(c,stdout)宏定義。 范例 參考getchar()。 rewind(重設(shè)文件流的讀寫位置為文件開(kāi)頭) 相關(guān)函數(shù) fseek,ftell,fgetpos,fsetpos 表頭文件 #include 定義函數(shù) void rewind(FILE * stream); 函數(shù)說(shuō)明 rewind()用來(lái)把文件流的讀寫位置移至文件開(kāi)頭。參數(shù)stream為已打開(kāi)的文件指針。此函數(shù)相當(dāng)于調(diào)用fseek(stream,0,SEEK_SET)。 返回值 范例 參考fseek() setbuf(設(shè)置文件流的緩沖區(qū)) 相關(guān)函數(shù) setbuffer,setlinebuf,setvbuf 表頭文件 #include 定義函數(shù) void setbuf(FILE * stream,char * buf); 函數(shù)說(shuō)明 在打開(kāi)文件流后,讀取內(nèi)容之前,調(diào)用setbuf()可以用來(lái)設(shè)置文件流的緩沖區(qū)。參數(shù)stream為指定的文件流,參數(shù)buf指向自定的緩沖區(qū)起始地址。如果參數(shù)buf為NULL指針,則為無(wú)緩沖IO。Setbuf()相當(dāng)于調(diào)用:setvbuf(stream,buf,buf?_IOFBF:_IO

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論