c語言對檔案的操作

2021-07-27 15:21:18 字數 3631 閱讀 7497

檔案使用方式

含義"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.如...