C语言文件操作函数
C語言文件操作函數(shù)
- fopen()函數(shù)
- fclose()函數(shù)
- fgetc()函數(shù)
- fgets()函數(shù)
- fputc()函數(shù)
- fputs()函數(shù)
- 文件函數(shù)用法的一些例子
- fprintf()函數(shù)
- fscanf()函數(shù)
- fwrite()函數(shù)
- fread()函數(shù)
- putw()函數(shù)
- getw()函數(shù)
- feof()函數(shù)
- ferror()函數(shù)
- clearerr()函數(shù)
- ftell()函數(shù)
- fseek()函數(shù)
- rewind()函數(shù)
C語言文件操作函數(shù)都在頭文件 stdio.h 中
fopen()函數(shù)
- 函數(shù)功能: fopen( ) 函數(shù)來創(chuàng)建一個(gè)新的文件或者打開一個(gè)已有的文件。
- 函數(shù)原型: FILE *fopen(const char *fname,const char * mode);
- 參數(shù)1: fname 表示文件名(可以含有路徑信息)
- 參數(shù)2: mode 表示打開的方式
- 返回值: 返回的是 FILE *文件指針 ,如果打開失敗返回 NULL(也就是0)。
mode 打開方式:
fclose()函數(shù)
- 函數(shù)功能: fclose( ) 函數(shù)用來清理緩沖區(qū),并釋放文件指針。
- 函數(shù)格式: int fclose( FILE *fp );
- 返回值: 如果成功關(guān)閉文件,fclose( ) 函數(shù)返回零,如果關(guān)閉文件時(shí)發(fā)生錯(cuò)誤,函數(shù)返回 EOF。
fgetc()函數(shù)
- 函數(shù)功能: fgetc() 函數(shù)從 fp 所指向的輸入文件中讀取一個(gè)字符。
- 函數(shù)格式: int fgetc( FILE * fp );
- 返回值: 讀取成功返回讀取的字符,失敗或者讀到文件尾,返回EOF(即-1)。
fgets()函數(shù)
- 函數(shù)功能:
函數(shù) fgets() 從 fp 所指向的輸入流中讀取 n - 1 個(gè)字符。
它會(huì)把讀取的字符串復(fù)制到緩沖區(qū) buf,并在最后追加一個(gè) null 字符(即’\0’)來終止字符串。 - 函數(shù)格式: char *fgets( char *buf, int n, FILE *fp );
- 返回值: 讀取成功返回讀取的字符串,失敗或者讀到文件尾,返回EOF(即-1)。
fputc()函數(shù)
- 函數(shù)功能: fputc() 函數(shù)把參數(shù) c 的字符值寫入到 fp 所指向的輸出流(即文件)中。
- 函數(shù)格式: int fputc( int c, FILE *fp );
- 返回值: 如果寫入成功,它會(huì)返回一個(gè)非負(fù)值,如果發(fā)生錯(cuò)誤,則會(huì)返回 EOF(即-1)。
fputs()函數(shù)
- 函數(shù)功能: fputs()函數(shù) 把字符串 s 寫入到 fp 所指向的輸出流中。
- 函數(shù)格式: int fputs( const char *s, FILE *fp );
- 返回值: 如果寫入成功,它會(huì)返回一個(gè)非負(fù)值,如果發(fā)生錯(cuò)誤,則會(huì)返回 EOF(即-1)。
文件函數(shù)用法的一些例子
例:這是你要讀的內(nèi)容
fgetc()用法的例子
fgets()用法的例子
例:這是你要寫的內(nèi)容
- 你好世界
- 你好C語言
puts()用法的例子:
#include<stdio.h> int main(void) {FILE *p=NULL;p=fopen("f:\\2.txt","w");if(p==NULL)//等價(jià)于 if(!p)//判斷文件是否正確打開{return 0;}fputs("你好世界\n",p);fputs("你好C語言\n",p);fclose(p);return 0; }特別注意:
對(duì)文件執(zhí)行寫操作以后,并不會(huì)馬上寫入文件,而是寫入到了這個(gè)文件的輸出緩沖區(qū)中,只有當(dāng)這個(gè)輸出緩沖區(qū)滿了,或者
執(zhí)行了fflush(stdout),或者執(zhí)行了fclose函數(shù)以后,或者程序結(jié)束,才會(huì)把輸出緩沖區(qū)中的內(nèi)容真正的寫入到文件。
例子:把文件1.txt文件的內(nèi)容寫到2.txt文件中
#include<stdio.h> int main(void) {FILE *file1;FILE *file2;char c;file1=fopen("1.txt","r");//沒有寫路徑,默認(rèn)是與c文件在同一文件夾下的路徑file2=fopen("2.txt","w");while((!file1)&&(!file2)){return 0;}while((c=getc(file1))!=EOF){fputc(c,file2);}fclose(file1);fclose(file2);return 0; }fprintf()函數(shù)
- 函數(shù)功能: 往文件中寫格式化數(shù)據(jù)
- 函數(shù)格式: int fprintf( FILE *stream,const char *foramt… );
- 返回值: 返回的是成功寫入的字符個(gè)數(shù)。
fprintf(stdout,"%d",a); 等價(jià)與 printf("%d",a);
fscanf()函數(shù)
- 函數(shù)功能: 從文件中格式化的讀取數(shù)據(jù)
- 函數(shù)格式: int fscanf( FILE *stream,const char *foramt… );
- 返回值: 成功時(shí)返回成功讀取的個(gè)數(shù),失敗時(shí)返回EOF。
fscanf(stdin,"%d",&a); 等價(jià)與 scanf("%d",&a);
fwrite()函數(shù)
- 函數(shù)功能: 以二進(jìn)制格式寫數(shù)據(jù)到文件中去
- 函數(shù)格式: int fwrite( const void*buffer ,size_t size, size_t count,FILE *stream );
- 參數(shù)1: 要寫入的數(shù)據(jù)的地址,即變量的地址
- 參數(shù)2: 每 “塊” 數(shù)據(jù)的大小
- 參數(shù)3: 寫入幾塊數(shù)據(jù)
fread()函數(shù)
- 函數(shù)功能: 以二進(jìn)制格式讀取文件中的數(shù)據(jù)
- 函數(shù)格式: int fread(void *buffer ,size_t size, size_t count,FILE *stream );
- 參數(shù)1: 存放數(shù)據(jù)的地址
- 參數(shù)2: 每 “塊” 數(shù)據(jù)的大小
- 參數(shù)3: 讀幾塊數(shù)據(jù)
putw()函數(shù)
- 函數(shù)功能: 以二進(jìn)制格式存貯一個(gè)整數(shù)
- 函數(shù)格式: int putw(int a,FILE *stream );
getw()函數(shù)
- 函數(shù)功能: 以二進(jìn)制格式讀取一個(gè)整數(shù)
- 函數(shù)格式: int getw(FILE *stream );
- 返回值: 成功時(shí)返回成功讀取到的值,失敗時(shí)返回EOF。
feof()函數(shù)
- 函數(shù)功能: 判斷文件指針是否讀取結(jié)束
- 函數(shù)格式: int feof(FILE *stream );
- 返回值: 如果指定的程序,已經(jīng)到達(dá)末尾位置,就返回一個(gè)非零的值(即 真)。
ferror()函數(shù)
- 函數(shù)功能: 判斷文件讀/寫,是否出錯(cuò)。
- 函數(shù)格式: int ferror(FILE *stream );
- perror()函數(shù) 輸出錯(cuò)誤的日志。
clearerr()函數(shù)
- 函數(shù)功能: 清除文件錯(cuò)誤日志
- 函數(shù)格式: void clearerr(FILE *stream );
ftell()函數(shù)
- 函數(shù)功能: 獲取文件指針的當(dāng)前位置
- 函數(shù)格式: long ftell(FILE *stream );
- 注意: 文件只能從當(dāng)前的位置讀寫。
fseek()函數(shù)
- 函數(shù)功能: 定位文件指針的位置
- 函數(shù)格式: int fseek(FILE * stream, long offset , int origin);
- 參數(shù)2: 設(shè)置偏移量,可正可負(fù),<0 向文件頭偏移, >0 向文件末偏移。
- 參數(shù)3:
SEEK_SET 從文件的開始位置定位,此時(shí)參數(shù)2必須大于0。
SEEK_CUR 從文件讀到的當(dāng)前位置定位。
SEEK_END 從文件的結(jié)束位置定位,此時(shí)參數(shù)2,必須小于0。
0表示文件的開始處
1表示當(dāng)前位置
2表示文件尾
rewind()函數(shù)
- 函數(shù)功能: 把文件指針的位置定位到開始位置
- 函數(shù)格式: rewind(FILE *stream );
- rewind(file); 等價(jià)于 fseek(file ,0,SEEK_SET);
總結(jié)