C語言文件操做函數大全

http://blog.csdn.net/mu0206mu/article/details/18980913數組

 

clearerr(清除文件流的錯誤旗標) 
相關函數 feof
表頭文件 #include<stdio.h> 
定義函數 void clearerr(FILE * stream); 
函數說明 clearerr()清除參數stream指定的文件流所使用的錯誤旗標。 
返回值 
  
fclose(關閉文件) 
相關函數 close,fflush,fopen,setbuf 
表頭文件 #include<stdio.h> 
定義函數 int fclose(FILE * stream); 
函數說明 fclose()用來關閉先前fopen()打開的文件。此動做會讓緩衝區內的數據寫入文件中,並釋放系統所提供的文件資源。 
返回值 若關文件動做成功則返回0,有錯誤發生時則返回EOF並把錯誤代碼存到errno。 
錯誤代碼 EBADF表示參數stream非已打開的文件。 
範例 請參考fopen()。
  
fdopen(將文件描述詞轉爲文件指針) 
相關函數 fopen,open,fclose 
表頭文件 #include<stdio.h> 
定義函數 FILE * fdopen(int fildes,const char * mode); 
函數說明 fdopen()會將參數fildes 的文件描述詞,轉換爲對應的文件指針後返回。參數mode 字符串則表明着文件指針的流形態,此形態必須和原先文件描述詞讀寫模式相同。關於mode 字符串格式請參考fopen()。 
返回值 轉換成功時返回指向該流的文件指針。失敗則返回NULL,並把錯誤代碼存在errno中。
安全

範例 
函數

#include<stdio.h>
main()
{
FILE * fp =fdopen(0,」w+」);
fprintf(fp,」%s/n」,」hello!」);
fclose(fp);
}

執行 hello!

feof(檢查文件流是否讀到了文件尾) 
相關函數 fopen,fgetc,fgets,fread 
表頭文件 #include<stdio.h> 
定義函數 int feof(FILE * stream); 
函數說明 feof()用來偵測是否讀取到了文件尾,尾數stream爲fopen()所返回之文件指針。若是已到文件尾則返回非零值,其餘狀況返回0。 
返回值 返回非零值表明已到達文件尾。
  
fflush(更新緩衝區) 
相關函數 write,fopen,fclose,setbuf 
表頭文件 #include<stdio.h> 
定義函數 int fflush(FILE* stream); 
函數說明 fflush()會強迫將緩衝區內的數據寫回參數stream指定的文件中。若是參數stream爲NULL,fflush()會將全部打開的文件數據更新。 
返回值 成功返回0,失敗返回EOF,錯誤代碼存於errno中。 
錯誤代碼 EBADF 參數stream 指定的文件未被打開,或打開狀態爲只讀。其它錯誤代碼參考write()。
  
this

fgetc(由文件中讀取一個字符) 
相關函數 open,fread,fscanf,getc 
表頭文件 include<stdio.h> 
定義函數 nt fgetc(FILE * stream); 
函數說明 fgetc()從參數stream所指的文件中讀取一個字符。若讀到文件尾而無數據時便返回EOF。 
返回值 getc()會返回讀取到的字符,若返回EOF則表示到了文件尾。 
範例
#include<stdio.h>
main()
{
FILE *fp;
int c;
fp=fopen(「exist」,」r」);
while((c=fgetc(fp))!=EOF)
printf(「%c」,c);
fclose(fp);
}

fgets(由文件中讀取一字符串) 
相關函數 open,fread,fscanf,getc 
表頭文件 include<stdio.h> 
定義函數 har * fgets(char * s,int size,FILE * stream); 
函數說明 fgets()用來從參數stream所指的文件內讀入字符並存到參數s所指的內存空間,直到出現換行字符、讀到文件尾或是已讀了size-1個字符爲止,最後會加上NULL做爲字符串結束。 
返回值 gets()若成功則返回s指針,返回NULL則表示有錯誤發生。 
範例 
spa

#include<stdio.h>
main()
{
char s[80];
fputs(fgets(s,80,stdin),stdout);
}

執行 this is a test /*輸入*/
this is a test /*輸出*/
  
fileno(返回文件流所使用的文件描述詞) 
相關函數 open,fopen 
表頭文件 #include<stdio.h> 
定義函數 int fileno(FILE * stream); 
函數說明 fileno()用來取得參數stream指定的文件流所使用的文件描述詞。 
返回值 返回文件描述詞。
範例 
#include<stdio.h>
main()
{
FILE * fp;
int fd;
fp=fopen(「/etc/passwd」,」r」);
fd=fileno(fp);
printf(「fd=%d/n」,fd);
fclose(fp);
}
.net

執行 fd=3
  
fopen(打開文件) 
相關函數 open,fclose 
表頭文件 #include<stdio.h> 
定義函數 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()後請做錯誤判斷及處理。 
範例
指針

#include<stdio.h>
main()
{
FILE * fp;
fp=fopen(「noexist」,」a+」);
if(fp= =NULL) return;
fclose(fp);
}

fputc(將一指定字符寫入文件流中) 
相關函數 fopen,fwrite,fscanf,putc 
表頭文件 #include<stdio.h> 
定義函數 int fputc(int c,FILE * stream); 
函數說明 fputc 會將參數c 轉爲unsigned char 後寫入參數stream 指定的文件中。 
返回值 fputc()會返回寫入成功的字符,即參數c。若返回EOF則表明寫入失敗。 
範例 
#include<stdio.h>
main()
{
FILE * fp;
char a[26]=」abcdefghijklmnopqrstuvwxyz」;
int i;
fp= fopen(「noexist」,」w」);
for(i=0;i<26;i++)
fputc(a
,fp);
fclose(fp);
}

fputs(將一指定的字符串寫入文件內) 
blog

相關函數 fopen,fwrite,fscanf,fputc,putc 
表頭文件 #include<stdio.h> 
定義函數 int fputs(const char * s,FILE * stream); 
函數說明 fputs()用來將參數s所指的字符串寫入到參數stream所指的文件內。 
返回值 若成功則返回寫出的字符個數,返回EOF則表示有錯誤發生。 
範例 請參考fgets()。 
fread(從文件流讀取數據) 
相關函數 fopen,fwrite,fseek,fscanf 
表頭文件 #include<stdio.h> 
定義函數 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<stdio.h>
#define nmemb 3
struct test
{
char name[20];
int size;
}s[nmemb];
int main(){
FILE * stream;
int i;
stream = fopen(「/tmp/fwrite」,」r」);
fread(s,sizeof(struct test),nmemb,stream);
內存

fclose(stream);
for(i=0;i<nmemb;i++)
printf(「name[%d]=%-20s:size[%d]=%d/n」,i,s
.name,i,s.size);
}

執行
name[0]=Linux! size[0]=6
name[1]=FreeBSD! size[1]=8
name[2]=Windows2000 size[2]=11

freopen(打開文件) 
相關函數 fopen,fclose 
表頭文件 #include<stdio.h> 
定義函數 FILE * freopen(const char * path,const char * mode,FILE * stream); 
函數說明 參數path字符串包含欲打開的文件路徑及文件名,參數mode請參考fopen()說明。參數stream爲已打開的文件指針。Freopen()會將原stream所打開的文件流關閉,而後打開參數path的文件。 
返回值 文件順利打開後,指向該流的文件指針就會被返回。若是文件打開失敗則返回NULL,並把錯誤代碼存在errno 中。
範例 
#include<stdio.h>
main()
{
FILE * fp;
fp=fopen(「/etc/passwd」,」r」); 
fp=freopen(「/etc/group」,」r」,fp);
fclose(fp);
}
資源

fseek(移動文件流的讀寫位置) 
相關函數 rewind,ftell,fgetpos,fsetpos,lseek 
表頭文件 #include<stdio.h> 
定義函數 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()來取得目前讀寫的位置。
範例

#include<stdio.h>
main()
{
FILE * stream;
long offset;
fpos_t pos;
stream=fopen(「/etc/passwd」,」r」);
fseek(stream,5,SEEK_SET);
printf(「offset=%d/n」,ftell(stream));
rewind(stream);
fgetpos(stream,&pos);
printf(「offset=%d/n」,pos);
pos=10;
fsetpos(stream,&pos);
printf(「offset = %d/n」,ftell(stream));
fclose(stream);
}

執行 offset = 5
offset =0
offset=10

ftell(取得文件流的讀取位置) 
相關函數 fseek,rewind,fgetpos,fsetpos 
表頭文件 #include<stdio.h> 
定義函數 long ftell(FILE * stream); 
函數說明 ftell()用來取得文件流目前的讀寫位置。參數stream爲已打開的文件指針。 
返回值 當調用成功時則返回目前的讀寫位置,如有錯誤則返回-1,errno會存放錯誤代碼。 

錯誤代碼 EBADF 參數stream無效或可移動讀寫位置的文件流。
範例 參考fseek()。
  
fwrite(將數據寫至文件流) 
相關函數 fopen,fread,fseek,fscanf 
表頭文件 #include<stdio.h> 
定義函數 size_t fwrite(const void * ptr,size_t size,size_t nmemb,FILE * stream); 
函數說明 fwrite()用來將數據寫入文件流中。參數stream爲已打開的文件指針,參數ptr 指向欲寫入的數據地址,總共寫入的字符數以參數size*nmemb來決定。Fwrite()會返回實際寫入的nmemb數目。 
返回值 返回實際寫入的nmemb數目。
範例 
#include<stdio.h>
#define set_s (x,y) {strcoy(s[x].name,y);s[x].size=strlen(y);}
#define nmemb 3
struct test
{
char name[20];
int size;
}s[nmemb];
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);
}

執行 參考fread()。
  
getc(由文件中讀取一個字符) 
相關函數 read,fopen,fread,fgetc 
表頭文件 #include<stdio.h> 
定義函數 int getc(FILE * stream); 
函數說明 getc()用來從參數stream所指的文件中讀取一個字符。若讀到文件尾而無數據時便返回EOF。雖然getc()與fgetc()做用相同,但getc()爲宏定義,非真正的函數調用。 
返回值 getc()會返回讀取到的字符,若返回EOF則表示到了文件尾。 
範例 參考fgetc()。
  
getchar(由標準輸入設備內讀進一字符) 
相關函數 fopen,fread,fscanf,getc 
表頭文件 #include<stdio.h> 
定義函數 int getchar(void); 
函數說明 getchar()用來從標準輸入設備中讀取一個字符。而後將該字符從unsigned char轉換成int後返回。 
返回值 getchar()會返回讀取到的字符,若返回EOF則表示有錯誤發生。 
附加說明 getchar()非真正函數,而是getc(stdin)宏定義。
範例 

#include<stdio.h>
main()
{
FILE * fp;
int c,i;
for(i=0li<5;i++)
{
c=getchar();
putchar(c);
}
}

執行 1234 /*輸入*/
1234 /*輸出*/

gets(由標準輸入設備內讀進一字符串) 
相關函數 fopen,fread,fscanf,fgets 
表頭文件 #include<stdio.h> 
定義函數 char * gets(char *s); 
函數說明 gets()用來從標準設備讀入字符並存到參數s所指的內存空間,直到出現換行字符或讀到文件尾爲止,最後加上NULL做爲字符串結束。 
返回值 gets()若成功則返回s指針,返回NULL則表示有錯誤發生。 
附加說明 因爲gets()沒法知道字符串s的大小,必須遇到換行字符或文件尾纔會結束輸入,所以容易形成緩衝溢出的安全性問題。建議使用fgets()取代。 
範例 參考fgets()

mktemp(產生惟一的臨時文件名) 
相關函數 tmpfile 
表頭文件 #include<stdlib.h> 
定義函數 char * mktemp(char * template); 
函數說明 mktemp()用來產生惟一的臨時文件名。參數template所指的文件名稱字符串中最後六個字符必須是XXXXXX。產生後的文件名會借字符串指針返回。 
返回值 文件順利打開後,指向該流的文件指針就會被返回。若是文件打開失敗則返回NULL,並把錯誤代碼存在errno中。
附加說明 參數template所指的文件名稱字符串必須聲明爲數組,如:
char template[ ]=」template-XXXXXX」;
不可用char * template=」template-XXXXXX」;
範例 
#include<stdlib.h>
main()
{
char template[ ]=」template-XXXXXX」;
mktemp(template);
printf(「template=%s/n」,template);
}
 
putc(將一指定字符寫入文件中) 
相關函數 fopen,fwrite,fscanf,fputc 
表頭文件 #include<stdio.h> 
定義函數 int putc(int c,FILE * stream); 
函數說明 putc()會將參數c轉爲unsigned char後寫入參數stream指定的文件中。雖然putc()與fputc()做用相同,但putc()爲宏定義,非真正的函數調用。 
返回值 putc()會返回寫入成功的字符,即參數c。若返回EOF則表明寫入失敗。 
範例 參考fputc()。

putchar(將指定的字符寫到標準輸出設備) 
相關函數 fopen,fwrite,fscanf,fputc 
表頭文件 #include<stdio.h> 
定義函數 int putchar (int c); 
函數說明 putchar()用來將參數c字符寫到標準輸出設備。 
返回值 putchar()會返回輸出成功的字符,即參數c。若返回EOF則表明輸出失敗。 
附加說明 putchar()非真正函數,而是putc(c,stdout)宏定義。 
範例 參考getchar()。
 
rewind(重設文件流的讀寫位置爲文件開頭) 
相關函數 fseek,ftell,fgetpos,fsetpos 
表頭文件 #include<stdio.h> 
定義函數 void rewind(FILE * stream); 
函數說明 rewind()用來把文件流的讀寫位置移至文件開頭。參數stream爲已打開的文件指針。此函數至關於調用fseek(stream,0,SEEK_SET)。
返回值 
範例 參考fseek()

setbuf(設置文件流的緩衝區) 
相關函數 setbuffer,setlinebuf,setvbuf 
表頭文件 #include<stdio.h> 
定義函數 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<stdio.h> 
定義函數 void setbuffer(FILE * stream,char * buf,size_t size); 
函數說明 在打開文件流後,讀取內容以前,調用setbuffer()可用來設置文件流的緩衝區。參數stream爲指定的文件流,參數buf指向自定的緩衝區起始地址,參數size爲緩衝區大小。 
返回值 

setlinebuf(設置文件流爲線性緩衝區) 
相關函數 setbuffer,setbuf,setvbuf 
表頭文件 #include<stdio.h> 
定義函數 void setlinebuf(FILE * stream); 
函數說明 setlinebuf()用來設置文件流以換行爲依據的無緩衝IO。至關於調用:setvbuf(stream,(char * )NULL,_IOLBF,0);請參考setvbuf()。 
返回值 

setvbuf(設置文件流的緩衝區) 
相關函數 setbuffer,setlinebuf,setbuf 
表頭文件 #include<stdio.h> 
定義函數 int setvbuf(FILE * stream,char * buf,int mode,size_t size); 
函數說明 在打開文件流後,讀取內容以前,調用setvbuf()能夠用來設置文件流的緩衝區。參數stream爲指定的文件流,參數buf指向自定的緩衝區起始地址,參數size爲緩衝區大小,參數mode有下列幾種
_IONBF 無緩衝IO
_IOLBF 以換行爲依據的無緩衝IO
_IOFBF 徹底無緩衝IO。若是參數buf爲NULL指針,則爲無緩衝IO。 
返回值 

ungetc(將指定字符寫回文件流中) 相關函數 fputc,getchar,getc 表頭文件 #include<stdio.h> 定義函數 int ungetc(int c,FILE * stream); 函數說明 ungetc()將參數c字符寫回參數stream所指定的文件流。這個寫回的字符會由下一個讀取文件流的函數取得。 返回值 成功則返回c 字符,如有錯誤則返回EOF。 

相關文章
相關標籤/搜索