【答疑釋惑】標準C語言如何操作檔案?
C語言中操作檔案功能都用ANSI C提供的一組標準庫函式來實現。檔案操作標準庫函式有如下:
fprintf:往檔案中寫格式化資料 fscanf:格式化讀取檔案中資料 fread: 以二進位制形式讀取檔案中的資料 fwrite:以二進位制形式寫資料到檔案中去 getw: 以二進位制形式讀取一個整數 putw: 以二進位制形式存貯一個整數
fopen: 開啟一個檔案
fclose:關閉一個檔案
fgetc: 從檔案中讀取一個字元 fputc: 寫一個字元到檔案中去 fgets: 從檔案中讀取一個字串 fputs: 寫一個字串到檔案中去
feof: 檔案狀態檢查函式,檔案結束 ferror: 檔案讀/寫出錯 clearerr: 清除檔案錯誤標誌 ftell: 瞭解檔案指標的當前位置
rewind: 反向設定檔案讀寫指標 fseek: 設定檔案讀寫指標
這次先挑一些來寫。
# 檔案的開啟
1.函式原型
FILE *fopen(char *pname,char *mode)
2.功能說明 按照mode 規定的方式,開啟由pname指定的檔案。若找不到由pname指定的相應檔案,就按以下方式之一處理: (1) 此時如mode 規定按寫方式開啟檔案,就按由pname指定的名字建立一個新檔案; (2) 此時如mode 規定按讀方式開啟檔案,就會產生一個錯誤。
開啟檔案的作用是: (1)分配給開啟檔案一個FILE 型別的檔案結構體變數,並將有關資訊填入檔案結構體變數; (2)開闢一個緩衝區; (3)呼叫作業系統提供的開啟檔案或建立新檔案功能,開啟或建立指定檔案; FILE *:指出fopen是一個返回檔案型別的指標函式;
3.引數說明 pname:是一個字元指標,它將指向要開啟或建立的檔案的檔名字串。 mode:是一個指向檔案處理方式字串的字元指標。所有可能的檔案處理方式見表8.1
4.返回值 正常返回:被開啟檔案的檔案指標。 異常返回:NULL,表示開啟操作不成功。
例如:
//定義一個名叫fp檔案指標
FILE *fp;
//判斷按讀方式開啟一個名叫test的檔案是否失敗
if((fp=fopen("test","r")) == NULL)
{
printf("The file opened.n");
exit(1);//結束程式的執行
}
要說明的是:C語言將計算機的輸入輸出裝置都看作是檔案。例如,鍵盤檔案、螢幕檔案等。ANSI C標準規定,在執行程式時系統先自動開啟鍵盤、螢幕、錯誤三個檔案。這三個檔案的檔案指標分別是:標準輸入stdin、標準輸出stdout和標準出錯 stderr。
# 檔案的關閉
1. 函式原型
int fclose(FILE *fp);
2. 功能說明 關閉由fp指出的檔案。此時呼叫作業系統提供的檔案關閉功能,關閉由fp->fd指出的檔案;釋放由fp指出的檔案型別結構體變數;返回操作結果,即0或EOF。
3. 引數說明 fp:一個已開啟檔案的檔案指標。
4. 返回值 正常返回:0。 異常返回:EOF,表示檔案在關閉時發生錯誤。 例如:
int n=fclose(fp);
# 檔案的讀寫操作
A. 從檔案中讀取一個字元
1. 函式原型
int fgetc(FILE *fp);
2. 功能說明 從fp所指檔案中讀取一個字元。
3. 引數說明 fp:這是個檔案指標,它指出要從中讀取字元的檔案。
4. 返回值 正常返回: 返回讀取字元的程式碼。 非正常返回:返回EOF。例如,要從"寫開啟"檔案中讀取一個字元時,會發生錯誤而返回一個EOF。
B. 寫一個字元到檔案中去
1. 函式原型
int fputc(int ch,FILE *fp)
2. 功能說明 把ch中的字元寫入由fp指出的檔案中去。
3. 引數說明 ch:是一個整型變數,記憶體要寫到檔案中的字元(C語言中整型量和字元量可以通用)。 fp:這是個檔案指標,指出要在其中寫入字元的檔案。
4. 返回值 正常返回: 要寫入字元的程式碼。 非正常返回:返回EOF。例如,要往"讀開啟"檔案中寫一個字元時,會發生錯誤而返回一個EOF。
B. 寫一個字元到檔案中去
1. 函式原型
int fputc(int ch,FILE *fp)
2. 功能說明 把ch中的字元寫入由fp指出的檔案中去。
3. 引數說明 ch:是一個整型變數,記憶體要寫到檔案中的字元(C語言中整型量和字元量可以通用)。 fp:這是個檔案指標,指出要在其中寫入字元的檔案。
4. 返回值 正常返回: 要寫入字元的程式碼。 非正常返回:返回EOF。例如,要往"讀開啟"檔案中寫一個字元時,會發生錯誤而返回一個EOF。
參考:http://www.cnblogs.com/likebeta/archive/2012/06/16/2551780.html