1. 程式人生 > >C語言文件操作

C語言文件操作

pri 三種 文件的 fputs put 空指針 putc err 作文

文件操作
文件的打開

FILE * fopen(const char filename,const char * mode);

文件的打開操作 fopen 打開一個文件

(幾種操作文件的組合)

文件的關閉操作

int fclose(FILE *fp);

fclose 關閉一個文件

文件的讀寫操作

讀取單個字符

fgetc 從文件中讀取一個字符 int fgetc(FILE * fp);

fputc 寫一個字符到文件中去 int fput(int c,FILE * fp); 

讀取字符串

  

fgets 從文件中讀取一個字符串 char * fgets(char * s,int n,FILE *fp);

從文件中讀取字符串並在字符串末尾添加‘\0‘,然後存入s,最多讀入n-1個字符

當讀到換行符、到達文件末尾或者讀滿n-1個字符,函數返回該字符串的首地址

讀取失敗返回空指針NULL

因為出錯和到達文件末尾都返回NULL,因此應該使用feof()和ferror()來確定函

數fget()返回NULL的實際原因

fgets()從指定的流讀字符串,讀到換行符時將換行符也作為字符串的一部分讀到

字符串中來

fputs 寫一個字符串到文件中去 int fputs(const char * s,FILE *fp);

出現寫入錯誤返回EOF,否則返回一個非負數

fputs()不會在寫入文件的字符串末尾加上換行符

按格式讀寫文件

fprintf 往文件中寫格式化數據 int fprintf(FILE * fp,const char * format,...)


第一個參數為文件指針,第二個參數是格式控制參數,第三個是輸出參數列表

fscanf 格式化讀取文件中數據 int fscanf(FILE * fp,const char * format,...)

第一個參數為文件指針,第二個參數是格式控制參數,第三個是地址參數列表

按格式讀寫文件需要知道輸出和地址參數,比較麻煩(個人認為)

按數據塊讀寫文件

fread 以二進制形式讀取文件中的數據

unsigned int fread(void * buffer,unsigned int size,unsigned int count,FILE * fp)

從fp所指的文件中讀取數據並存儲到buffer所指向的內存中

buffer待讀入數據塊的起始地址

size每個數據塊的大小(待讀入每個數據塊的字節數)

count最多允許讀取數據塊的個數

函數返回的是實際讀到的數據塊個數

fwrite 以二進制形式寫數據到文件中去

unsigned int fread(void * buffer,unsigned int size,unsigned int count,FILE * fp)

buffer待輸出數據塊的起始地址

size每個數據塊的大小(待讀入每個數據塊的字節數)

count最多允許讀取數據塊的個數

函數返回的是實際讀到的數據塊個數

這兩個函數常於二進制文件的輸入和輸出

getw 以二進制形式讀取一個整數

putw 以二進制形式存貯一個整數

文件狀態檢查函數

feof 文件結束 int feof(FILE * fp);

ferror 文件讀/寫出錯 int ferror(FILE *fp);

文件出現錯誤函數返回非0值,否則,函數返回0

clearerr 清除文件錯誤標誌

ftell 了解文件指針的當前位置 long tell(FILE * fp);

成功返回文件當前讀寫位置,否則返回-1L


文件定位函數

rewind 反繞重置位置指針到文件首部 void rewind(FILE * fp);

fseek 隨機定位 int fseek(FILE *fp,long offset,int fromwhere);

功能:將fp的文件位置指針從fromwhere開始移動offset個字節指示下一個要讀取的位置
offset(偏移量)為正向後移動 為負向前移動 要求為長整型數據(常量數據後面要加L)
fromwhere有三種取值:SEEK_SET/0表示文件來時處 SEEK_CUR/1表示文件當前位置 SEEK_END/2表示文件結尾處

補充:

int fflush(FILE * fp);

無條件地把緩沖區的所有數據寫入物理設備

C語言文件操作