C語言讀寫檔案

2021-09-24 07:21:01 字數 4105 閱讀 3147

c讀寫檔案

使用 fopen(檔名,訪問模式) 函式來開啟檔案,一般有getc/putc , fgets/fputs , fscanf/fprintf , fread/fwrite 四大家族來讀寫檔案。

關於檔案訪問模式有如下的選擇:

訪問模式說明r

以唯讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。

w開啟乙個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。

a開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。

rb以二進位制格式開啟乙個檔案用於唯讀。檔案指標將會放在檔案的開頭。這是預設模式。

wb以二進位制格式開啟乙個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。

ab以二進位制格式開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。

r+開啟乙個檔案用於讀寫。檔案指標將會放在檔案的開頭。

w+開啟乙個檔案用於讀寫。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。

a+開啟乙個檔案用於讀寫。如果該檔案已存在,檔案指標將會放在檔案的結尾。檔案開啟時會是追加模式。如果該檔案不存在,建立新檔案用於讀寫。

rb+以二進位制格式開啟乙個檔案用於讀寫。檔案指標將會放在檔案的開頭。

wb+以二進位制格式開啟乙個檔案用於讀寫。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。

ab+以二進位制格式開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。如果該檔案不存在,建立新檔案用於讀寫。

1、getc/putc家族讀寫檔案

​ int getc(file *stream) :從檔案讀取字元, 一次讀取乙個字元,並把位置識別符號往前移動。

​ 引數:指向 file 物件的指標

​ 返回值:以 int 的形式返回讀取的字元,如果到達檔案末尾或發生讀錯誤,則返回 eof。

​ int putc(int c , file *stream):將指定的字元輸出到指定的輸出流中,並把位置識別符號往前移動。

​ 引數:c –要被寫入的字元,該字元以其對應的 int 值進行傳遞。

stream –指向 file 物件的指標

​ 返回值:以 int 的形式返回寫入的字元,如果發生錯誤則返回 eof

使用示例:

#include

//讀乙個字元

intmain

(int argc,

char

*ar**)

else

//使用完,關閉檔案

fclose

(p);

}return0;

}//寫乙個字元

intmain

(int argc,

char

*ar**)

else

return0;

}

2、fgets/fputs家族讀寫檔案

​ char *fgets(char *s, int size, file *stream); 按行讀取,當讀到檔案尾時結束,返回null。

​ 引數:s –這是指向乙個字元陣列的指標,該陣列儲存了要讀取的字串。

size –這塊記憶體的大小,

stream –fopen返回的檔案指標

​ 返回值:如果成功,該函式返回相同的 str 引數。如果為空或者錯誤返回空指標

​ int fputs(char *s, file *stream);按行寫入。

​ 引數:s –要寫入的內容

stream –fopen返回的檔案指標

​ 返回值:寫入成功返回非0,寫入失敗返回eof。

使用示例:

//讀

intmain

(int argc,

char

*ar**)

else

;fgets

(s,sizeof

(s), p)

;printf

("%s"

,s);

fclose

(p);

}return0;

}//寫

intmain

(int argc,

char

*ar**)

else

return0;

}

3、fscanf/fprintf家族讀寫檔案

​ int fscanf(file *stream, const char *format, …):fscanf與scanf用法基本一致,fscanf是從乙個檔案讀取輸 入,scanf是從鍵盤讀取輸入

​ 引數:stream –指向 file 物件的指標

format –格式化輸入

​ 返回值:該函式返回成功匹配和賦值的個數。如果到達檔案末尾或發生讀錯誤,則返回 eof。

​ int fprintf(file *stream, const char *format, …)

​ 返回值:返回寫入的字元總數,否則返回乙個負數。

使用示例:

//讀

intmain

(void

)fclose

(p);

return0;

}//寫

intmain()

;int i;

for(i =

0; i <

10; i++

)fclose

(p);

return0;

}

4、fread/fwrite家族讀寫檔案

​ size_t fread(void *ptr, size_t size, size_t nmemb, file *stream):從檔案流中讀資料

​ 引數:ptr– 這是指向帶有最小尺寸 size*nmemb 位元組的記憶體塊的指標。

**size** -- 這是要讀取的每個元素的大小,以位元組為單位。
nmemb– 要讀nmemb個資料項,每個資料項size個位元組。

stream– 這是指向 file 物件的指標,該 file 物件指定了乙個輸入流。

​ 返回值:成功讀取的資料項總數

​ size_t fwrite(const void *ptr, size_t size, size_t nmemb, file *stream):向指定的檔案中寫入資料

​ 引數:ptr– 這是指向要被寫入的元素陣列的指標。

size– 這是要被寫入的每個元素的大小,以位元組為單位。

nmemb– 要讀nmemb個資料項,每個資料項size個位元組。

stream– 這是指向 file 物件的指標,該 file 物件指定了乙個輸出流。

​ 返回值:成功寫入的資料項總數

使用示例:

//寫

intmain

(void);

file *p =

fopen

("/users/devin/desktop/a.dat"

,"wb");

fwrite

(&st,

sizeof

(st),1

, p)

;fclose

(p);

return0;

}//讀

intmain

(void

)

C語言檔案讀寫

include include define maxlen 1024 int main file outfile,infile outfile fopen 1.bmp wb infile fopen c 1.bmp rb unsigned char buf maxlen int rc while r...

C語言讀寫檔案

c語言庫函式包括檔案的開啟 關閉 讀 寫 定位等各種操作 要操作檔案,首先要宣告乙個檔案指標變數file fp 呼叫fopen開啟檔案 檔案指標名 fopen 檔名,使用檔案方式 ps 這裡檔案路徑必須是帶雙斜槓 其中,1.檔案使用方式 意 義 rt 唯讀開啟乙個文字檔案,只允許讀資料 wt 只寫開...

C語言檔案讀寫

讀取乙個完整的檔案 include include int main 如果檔案錯誤,退出1 獲得檔案大小 fseek pfile 0 seek end 指標移到檔案末位 lsize ftell pfile 獲得檔案長度 rewind pfile 函式rewind 把檔案指標移到由stream 流 指...