1. 程式人生 > >FILE檔案流的中對fopen、fseek、fread、fwrite,fprintf、fputs、fgets的理解

FILE檔案流的中對fopen、fseek、fread、fwrite,fprintf、fputs、fgets的理解

目前課題中使用,記錄下來方便以後檢視。

fopen

fopen函式用來開啟一個檔案,其呼叫的一般形式為:

FILE * fopen(const char *path,const char * mode);

fopen()函式中第一個形式引數表示檔名, 可以包含路徑和檔名兩部分。如:

"B:TEST.DAT"

"C://TC//TEST.DAT"

如果將路徑寫成"C:/TC/TEST.DAT"是不正確的, 這一點要特別注意。

第二個形式引數表示開啟檔案的型別。關於檔案型別的規定參見下表。

表 檔案操作型別

━━━━━━━━━━━━━━━━━━━━━━━━━━━━

字元                含義

────────────────────────────

"r"           開啟文字檔案只讀

"w"           建立文字檔案只寫

"a"           增補, 如果檔案不存在則建立一個

"r+"          開啟一個文字檔案讀/寫

"w+"          建立一個文字檔案讀/寫

"a+"          開啟或建立一個檔案增補

"b"           二進位制檔案(可以和上面每一項合用)

"t"           文這檔案(預設項)

返回值:檔案順利開啟後,指向該流的檔案指標就會被返回。如果檔案開啟失敗則返回NULL,並把錯誤程式碼存在errno 中。

fseek

函式名: fseek

功 能: 重定位檔案流上的檔案指標位置

用 法: int fseek(FILE *stream, longoffset, int fromwhere);

stream:檔案指標,必須為已開啟的檔案

offfset:設定的偏移量,正數表示正向偏移

fromwhere:偏移開始的位置。有三種取值

SEEK_SET: 檔案開頭
   SEEK_CUR:當前位置
   SEEK_END:檔案結尾

描 述: 函式設定檔案指標stream的位置。如果執行成功,stream將指向以fromwhere為基準,偏移offset個位元組的位置。如果執行失敗(比如offset超過檔案自身大小),則不改變stream指向的位置。

返回值: 成功,返回0,否則返回其他值。

fread

函式原型:size_t fread(void*buff,size_t size,size_t count,FILE* stream)

作用:從檔案中讀入資料到指定的地址中

引數:第一個引數為接收資料的指標(buff),也即資料儲存的地址

第二個引數為單個元素的大小,即由指標寫入地址的資料大小,注意單位是位元組,通俗理解為一次讀取多大的位元組

第三個引數為元素個數,一共要讀取多少元素,即一共讀取的位元組數為size*count

第四個引數為提供資料的檔案指標,該指標指向檔案內部資料

返回值:讀取的總資料元素個數

注意:檔案指標是移動一個指標,讀取一個位元組,因此讀取完要求位元組數後,指標停留在最後一個位元組處,直到下次讀取或者fseek才會移動指標。

fwrite

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

作用:向檔案寫入一個數據塊

返回值:返回實際寫入的資料塊數目

(1)buffer:是一個指標,是準備要寫入檔案的資料地址

(2)size:要寫入檔案的一個數據項的位元組個數;

(3)count:要進行寫入size位元組的資料項的個數,一共要寫入size*count個位元組;

(4)stream:目標檔案指標

(5)返回實際寫入的資料項個數count。

fprintf

fprintf( ) 函式中格式化的規定與printf( ) 函式相同,所不同的只是 fprintf()函式是向檔案中寫入。而printf()是向螢幕輸出。

fprintf() 函式的返回值為實際寫入檔案中的位元組個數(位元組數)。如果寫錯誤, 則返回一個負數。

int fprintf(FILE *stream, char*format, <variable-list>);

例如 b= fprintf(fp,"%d",a);指像fp指向的檔案裡列印一個整數,值為a,b是4.

fputs、fputc

int fputs(char *string, FILE*steam);

int fputc(int ch, FILE*steam);

fputs()函式返回0時表明將string指標所指的字串寫入steam指向的檔案中的操作成功, 返回非0時, 表明寫操作失敗。

fputc()函式返回一個向steam指向的檔案中寫字元ch的值, 返回0表示寫操作成功, 否則返回EOF(檔案結束結束其值為-1,

fgets、fgetc

char fgets(char *string, intn, FILE *steam);

int fgetc(FILE *steam);

fgets()函式從檔案中讀取至多n-1個字元(n用來指定字元數), 並把它們放入string指向的字串中, 在讀入之後自動向字串未尾加一個空字元, 讀成功返回string指標, 失敗返回一個空指標。

fgetc()函式返回檔案當前位置的一個字元, 讀錯誤時返回EOF。