1. 程式人生 > >C語言檔案操作的相關(一)

C語言檔案操作的相關(一)

C語言中對檔案的操作,是很重要的,今天我首先對對檔案進行操作的函式進行整理學習
1. fread:
原型:size_t fread(void * buffer,size_t size,size_t count,FILE *stream)
引數: buffer:接收資料的記憶體地址
size:要讀取的每個資料項的位元組數
count:要讀取的資料項的個數
stream:輸入流

返回值:真實寫入的項數,若大於count的數值則產生錯誤則返回0.
功能:從一個檔案流中讀取資料,以塊的形式讀取大量資料,可讀取count個數據項,每個項有size個位元組,呼叫成功返回count的數值,不成功或者讀到檔案末尾返回0。

標頭檔案:stdio.h

示例:fread(buf,1,strlen(address),stream);

2. fwrite:
原型:size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);
引數:buffer:指標,用於表示要獲取資料的地址
size:要寫入內容的單位元組數
count:要寫入的資料項的個數
stream:目標檔案指標
返回值:實際寫入的資料項個數count

功能:向所指向的檔案寫一個數據塊

標頭檔案:stdio.h

注意點:1)可以二進位制形式對檔案進行操作,不侷限於文字檔案。
2)如果檔案開啟模式是w+,是從檔案指標指向的地址開始寫,替換掉之後的內容,檔案的長度可以不變,stream的位置移動count個數
3)如果檔案開啟模式是a+,則從檔案的末尾開始新增,檔案長度加大
4) 該函式是寫到了使用者空間緩衝區,並未同步到檔案中,所以修改後要將記憶體與檔案同步可以用fflush(FILE *fp)函式同步。

示例:
fwrite(buf,sizeof(Address)1,fp);

3. fgetc:
原型:char *fgets(char *buf, int bufsize, FILE *stream);
引數:buf:字元型指標,指向用來儲存所得資料的地址
bufsize:整型資料,指明儲存資料的大小
stream:檔案結構體指標,將要讀取的檔案流
返回值:成功則返回buf,失敗或讀到檔案結尾返回NULL

功能:從檔案中讀取字串,
讀取一行資料,讀取的資料儲存在buf指向的字元陣列,最多一次讀取bufsize個字元(第bufsize個字元’\0’)。

標頭檔案:stdio.h

注意點:
1) 不能直接通過fgets的返回值來判斷函式是否是出錯而終止的,應該藉助feof()或者ferror()來判斷。
2) 讀取指定大小的資料,可以避免gets()從stdin接收字串而不檢查它所複製的快取的容積導致的快取溢位問題
示例: fgets(buf,strlen(string),fp);
4. fputs:
原型:int fputs(const char * s,FILE * stream)
引數:str: 字元型指標,可以是字串常量,或者存放字串的陣列首地
fp:檔案指標
返回值:若成功則返回寫出的字元個數,返回EOF則表示有錯誤發生

功能:向指定檔案的檔案寫入一個字串

標頭檔案:stdio.h

示例:fputs(str,fp);

5. fgetc:
原型:int fgetc(FILE *stream)
引數:stream:檔案指標
返回值:成功則返回讀取到的字元,到達檔案尾或者錯誤則返回EOF,上述的兩種情況需要通過ferror()或feof()來區分

功能:從檔案中讀取一個字元

標頭檔案:stdio.h

示例:fgetc(fp);


6. fputc:
原型:int fputc (char c, File *fp)
引數:c:字元
fp:檔案指標,
返回值:在正常呼叫情況下,函式返回寫入檔案的字元的ASCII碼值,出錯時,返回EOF(-1)
功能:將字元ch寫到檔案指標fp所指向的檔案的當前寫指標的位置

標頭檔案:stdio.h

示例:fputc(s[i],f);