c 函數fopen,fwrite,fread

C 語言函數 fopen

功能:打開一個文件

函數原型:FILE *fopen(const char *path,const char *mode);

所需庫:  <stdio.h>

返回值:文件順利打開後,指向該流的文件指針就會被返回。如果文件打開失敗則返回NULL,並把錯誤代碼存在errno中。

參數說明:

參數path字符串包含欲打開的文件路徑及文件名,參數mode字符串則代表着流形態。

mode有下列幾種形態字符串:

r  打開只讀文件,該文件必須存在。

r+ 打開可讀寫的文件,該文件必須存在。

rb+ 讀寫打開一個二進制文件,只允許讀寫數據,同樣要求文件存在。

rt+  讀寫打開一個文本文件,允許讀和寫。

總結,有 r 無 w 時都要求文件存在,b只是修飾文件類型用的,說明是二進制文件還是文本文件。

 

w 打開只寫文件,若文件存在則文件長度清爲0,即該文件內容會消失,若文件不存在則建立該文件。

w+ 打開可讀寫文件,若文件存在則文件長度清爲零,若文件不存在則建立文件。

 

a 以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。(EOF符保留)

a+ 以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。 (原來的EOF符不保留)

wb 只寫打開或新建一個二進制文件;只允許寫數據。

wb+ 讀寫打開或建立一個二進制文件,允許讀和寫。

wt+ 讀寫打開或着建立一個文本文件;允許讀寫。

at+ 讀寫打開一個文本文件,允許讀或在文本末追加數據。

ab+ 讀寫打開一個二進制文件,允許讀或在文件末追加數據。

上述的形態字符串都可以再加一個b字符,如rb、w+b或ab+等組合,加入b 字符用來告訴函數庫打開的文件爲二進制文件,而非純文字文件。

 

從上述看, a  與 a+ 的主要區別是 a打開時,EOF符保留,而用a+時,原來的EOF符不保留。  對於文件結符,待解決。

 

fwrite()

功能:向文件讀入寫入一個數據塊。

用法:fwrite(const void *buffer,size_t size,size_t count,FILE *stream);

(1)buffer:是一個指針,對fwrite 來說,是要輸出數據的地址。

(2)size:要寫入內容的單字節數;

(3)count:要進行寫入size字節的數據項的個數;

(4)stream:目標文件指針。

說明:寫入到文件的哪裏與文件的打開模式有關,如果是r+,則是從file pointer 指向的地址開始寫,替換掉之後的內容,文件的長度可以不變,stream的位置移動count個數。如果是a+,則從文件的末尾開始添加,文件長度加大,而且是fseek函數對此函數沒有作用。

 

 

 

fread():

功能:從一個流中讀數據

函數原型:int fread(void *ptr,int size,int nitems,FILE *stream);

參數:用於接收數據的地址(ptr)

單個元素的大小(size):單位是字節而不是位,例如讀取一個整數值就是4

元素個數(nitems)

提供數據的文件指針(stream)

返回值:成功讀取的元素個數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章