1.檔案開啟函數:fopen
調用形式:檔案指標名=fopen(檔案名稱(路徑),使用檔案方式)
eg:FILE *fp;
fp=fopen("file1.bat","rb");
檔案使用方式
“rt” 唯讀開啟一個文字檔,只允許讀資料
“wt”只開啟或建立一個文字檔,只允許寫資料
“at“追加開啟一個文字檔,只允許在檔案末寫資料
”rb“唯讀方式開啟一個二進位檔案,只允許讀資料
”wb“唯寫開啟或建立一個二進位檔案,只允許寫資料
”ab“追加開啟一個二進位檔案,並在檔案末尾寫資料
”rt+“讀寫開啟一個文字檔,允許讀和寫
”wt+“讀寫開啟或建立一個文字檔,允許讀寫
”at+“讀寫方式開啟一個文字檔,允許讀,或在檔案末尾追加資料
”rb+“讀寫開啟一個二進位檔案,允許讀寫
”wb+“讀寫或建立一個二進位檔案,允許讀寫
”ab+“讀寫開啟一個二進位檔案,允許讀,或在檔案末尾追加資料
用”a“方式開啟檔案。但此時該檔案必須是存在的,否則會出錯。
2.fclose函數
調用的一般形式:fclose(檔案指標)
eg:fclose(fp):正常完成關閉檔案操作時,fclose函數傳回值為0,否則有錯誤發生
3.一些讀寫函數:
字元讀寫函數:fgetc和fputc
字串讀寫函數:fgets和fputs
資料區塊讀寫函數:fread和fwrite
格式化讀寫函數:fscanf和fprinf
eg:fgetc函數調用形式:
ch=fgetc(fp);從開啟的檔案fp中讀取一個字元傳送到ch中
fputc函數調用形式:
ch=fputc('d',fp);把字元d寫入fp指向的檔案中
rewind函數:用於把fp所指向檔案的內部位置指標移動到檔案頭:rewind(檔案指標)
fp=stdout:輸出給標準輸出檔案stdout,及在顯示器上顯示檔案的內容;
用法:fp=stdout;
fputc(ch,fp);
fgets:從指定檔案讀一個字串到字元數組中
用法:fgets(字元數組名,n,檔案指標)n表示讀取的字串不超過n-1個字元,讀入的最後一個字元末尾加‘\0’標誌
注意:在讀取到n-1個字元前,如果遇到分行符號或EOF,則讀取結束;fgets函數的傳回值是其字元數組的首地址
fputs:向指定檔案寫入一個字串
用法:fputs(字串,檔案指標):fput(”abcd“,fp)
fread\fwrite:資料區塊的讀\寫:
用法:fread(buffer,size,count,fp)
fwrite(buffer,size,cout,fp);其中buffer是一個指標,在fread函數中它表示輸入資料的首地址。在fwrite中表示
存放輸出資料的首地址;size表示資料的位元組數;count表示讀寫的資料區塊;fp檔案指標
fread(buf,4,5,fp);從檔案fp中讀取4個位元組(int)送人到buf中,連續讀5次(及讀5個int)
fscanf\fprintf函數與前面使用的scanf和printf
函數的功能相似,都是格式化讀寫函數。
兩者的區別在於 fscanf 函數和fprintf函數的讀寫對象不是鍵盤和顯示器,而是磁碟檔案。
這兩個函數的調用格式為:
fscanf(檔案指標,格式字串,輸入表列);
fprintf(檔案指標,格式字串,輸出表列);
eg:
fscanf(fp,"%d%s",&i,s);
fprintf(fp,"%d%c",j,ch);
4.檔案的隨機讀取
rwind;
fseek函數:還要說明的是fseek函數一般用於二進位檔案。在文字檔中由於要進行轉換,故往往計算的位置會出現錯誤。
fseek函數用來移動檔案內部位置指標,其調用形式為: fseek(檔案指標,位移量,起始點);其中:“檔案指標”指向被移動的檔案。
“位移量”表示移動的位元組數,要求位移量是long型資料,以便在檔案長度大於64KB時不會出錯。當用常量表示位移量時,要求加尾碼“L”。
“起始點”表示從何處開始計算位移量,規定的起始點有三種:檔案首,當前位置和檔案尾。
其表示方法如下
起始點 表示符號 數字表示
──────────────────────────
檔案首SEEK—SET0
當前位置SEEK—CUR1
檔案末尾SEEK—END
2
例如:
fseek(fp,100L,0);其意義是把位置指標移到離檔案首100個位元組處。還要說明的是fseek函數一般用於二進位檔案。在文字檔中由於要進行轉換,
故往往計算的位置會出現錯誤。檔案的隨機讀寫在移動位置指標之後,即可用前面介紹的任一種讀寫函數進行讀寫。
由於一般是讀寫一個資料據塊,因此常用fread和fwrite函數
5.檔案檢查
feof:檔案結束檢測:feof(檔案指標):判斷是否處於檔案結束為止(返回1或0)
ferror:讀寫出錯檢測,檢測檔案讀寫是否出錯(返回1或0)
clearerr:檔案出錯標誌和檔案結束標誌0函數;清除出錯標誌和檔案結束標誌,使它們為0值