檔案使用方式
含義"r" (唯讀)
開啟乙個文字檔案,只允許讀資料
"w" (只寫)
開啟或建立乙個文字檔案,只允許寫資料
"a" (追加)
開啟乙個文字檔案,並在檔案末尾寫資料
"rb" (唯讀)
開啟乙個二進位制檔案,只允許讀資料
"wb" (只寫)
開啟或建立乙個二進位制檔案,只允許寫資料
"ab" (追加)
開啟乙個二進位制檔案,並在檔案末尾寫資料
"r+" (讀寫)
開啟乙個文字檔案,允許讀和寫
"w+" (讀寫)
開啟或建立乙個文字檔案,允許讀和寫
"a+" (讀寫)
開啟乙個文字檔案,允許讀,或在檔案末追加資料
"rb+" (讀寫)
開啟乙個二進位制檔案,只允許讀和寫
"wb+" (讀寫)
開啟或建立乙個二進位制檔案,允許讀和寫
"ab+" (讀寫)
開啟乙個二進位制檔案,允許讀,或在檔案末追加資料
其呼叫格式一般如下:
file *fp;
fp=fopen(檔名,使用檔案方式);
fclose(檔案指標);
例如:fclose(fp);
fputc函式的作用是把乙個字元寫到磁碟檔案(fp所指向的檔案)中,其呼叫的一般格式如下:
ch=fputc(ch,fp);
其中,ch是要輸出的字元,它可以是乙個字元常量,也可以是乙個字元變數;fp是檔案指標變數。當函式輸出成功則返回值就是輸出的字元;如果輸出失敗,則返回eof。
fgetc函式的作用是從指定的檔案(fp指向的檔案)讀入乙個字元賦給ch(注意,該檔案必須是以讀或讀寫的方式開啟)。當函式遇到檔案結束符時將返回乙個檔案結束標誌eof。
其呼叫的一般格式如下:
ch=fgetc(fp);
fputc和fgetc函式每次只能讀寫檔案中的乙個字元,但是在編寫程式的過程中往往需要對整塊資料進行讀寫,列如對乙個結構體型別變數值進行讀寫,此時就用到了fread和fwrite函式。
1.fread函式
fread函式的作用是從fp所指向的檔案中讀入count次,每次讀size位元組,讀入的資訊儲存在buffer位址中。
fread函式的一般格式如下:
fread(buffer,size,count,fp);
2.fwrite函式
fwrite函式的作用是將buffer位址開始的資訊輸出count次,每次寫size位元組到fp所指向的檔案。
fwrite函式的一般格式如下:
fwrite(buffer,size,count,fp);
例如:fread(a,2,3,fp);
其含義是從fp所指向的檔案中,每次讀2個位元組送入陣列a中,連續讀3次。
fwrite(a,2,3,fp);
其含義是將a陣列中的資訊每次輸出2個位元組到fp所指向的檔案中,連續輸出3次。
要實現搜尋定位功能,除了fseek函式外,還有兩個函式在編寫程式的過程中也會經常遇到,即rewind函式和ftell函式。
5.1 rewind函式
rewind函式的作用是使位置指標重新返回檔案的開頭,該函式沒有返回值。
rewind函式的一般格式如下:
int rewind(檔案型別指標)
5.2 ftell函式
ftell函式的作用是得到流式檔案中的當前位置,用相對於檔案開頭的位移量來表示。當ftell函式返回值為-1l時,表示出錯。
ftell函式的一般格式如下:
long ftell(檔案型別指標)
例如:long i;
if((i=ftell(fp))==-1l)
printf("error");
5.3 fseek函式
fseek(檔案型別指標,位移量,起始點);
該函式的作用是移動檔案內部位置指標。其中,"檔案型別指標"指向被移動的檔案;"位移量"表示移動的位元組數,要求位移量是long型資料,以便在檔案長度在大於64k時,常用常量表示位移量時,要求加字尾"l";"起始點"表示從何處開始計算位移量,規定的起始點有3種,即檔案首、當前位置和檔案末尾。
起始點表示符號
字數表示
檔案首seek-set
0當前位置
seek-cur
1檔案末尾
seek-end2
例如:fseek(fp,-20l,1);
表示將位置指標從當前位置向後退20個位元組。
說明:
fseek函式一般用於二進位制檔案;在文字檔案中由於要進行轉換,故往往計算的位置會出現錯誤。對檔案進行隨機讀寫時,在移動位置指標後,即可以用前面介紹的任一讀寫函式進行讀寫。
例項:合併兩個檔案的內容
/*合併兩個檔案的內容*/
#include#includeint main()
printf("file:\n");
ch=fgetc(fp1);
while(ch!=eof) /*將檔案1中的內容輸出*/
printf("\n請輸入檔案2的名字:\n");
scanf("%s",filename2);
if((fp2=fopen(filename2,"r"))==null) /*以唯讀的方式開啟*/
printf("file2:\n");
ch=fgetc(fp2);
while(ch!=eof) /*將檔案2中的內容輸出*/
fseek(fp2,0l,0); /*將檔案2中的位置指標移到檔案開始處*/
ch=fgetc(fp2);
while(!feof(fp2))
fclose(fp1);
fclose(fp2);
return 0;
}
合併前文件的內容
最後補充一點有時候為什麼把東西寫進檔案後變成了亂碼????????????
C語言對檔案的操作
從事軟體開發,經常要用到資料的讀寫,有時因資料量太小不太好用資料庫,這時運用c語言中豐富的檔案操作功能是不錯的乙個選擇.舉例說明常用的幾種形式 include include using namespace std struct node vectorhead 完成從檔案中讀取相關的資訊 int f...
C語言對檔案的操作
1.開啟檔案 file fp fp open const char filename,char mod 注意這裡的filename需要絕對路徑且分隔符用 表示如 c users desktop filename 名字是要加字尾的呦 使用檔案的方式 mod 檔案使用方式 含義如果檔案不存在 r 唯讀 ...
go語言對檔案操作的總結
package main import fmt os 傳遞乙個路徑進去 func isfile path string bool return file.isdir func main else package main import fmt os 使用os.stat 函式返回的錯誤值來判斷 1.如...