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)
返回值:成功讀取的元素個數。