C語言檔案輸入和輸出操作的學習心得(一)

nothingCheung發表於2019-05-12

概述

今天學習了C語言檔案輸入輸出操作的相關知識。在此,向大家分享一下學習心得。

fopen()

首先介紹fopen()這個函式,以下內容為fopen()函式的詳解: 標頭檔案:#include <stdio.h>
fopen()是一個常用的函式,用來以指定的方式開啟檔案。
其原型為: FILE fopen(const char path, const char * mode);
【引數解釋】
path:包含了路徑的檔名,檔案的路徑應寫成形如C:資料夾1資料夾2檔案.txt,或者/資料夾1/資料夾2/檔案.txt的形式。
mode:開啟檔案的方式 以下是幾種常見的方式:

r:以只讀方式開啟檔案,該檔案必須存在。 r+:以讀/寫方式開啟檔案,該檔案必須存在。
rb+:以讀/寫方式開啟一個二進位制檔案,只允許讀/寫資料。
rt+:以讀/寫方式開啟一個文字檔案,允許讀和寫。w開啟只寫檔案,若檔案存在則長度清為0,即該檔案內容消失,若不存在則建立該檔案。
w+:開啟可讀/寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失。若檔案不存在則建立該檔案。
a:以附加的方式開啟只寫檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾,即檔案原先的內容會被保留(EOF符保留)。
a+:以附加方式開啟可讀/寫的檔案。若檔案不存在,則會建立該檔案,如果檔案存在,則寫入的資料會被加到檔案尾後,即檔案原先的內容會被保留(原來的EOF符不保留)。
wb:以只寫方式開啟或新建一個二進位制檔案,只允許寫資料。 wb+:以讀/寫方式開啟或建立一個二進位制檔案,允許讀和寫。
wt+:以讀/寫方式開啟或建立一個文字檔案,允許讀寫。 at+:以讀/寫方式開啟一個文字檔案,允許讀或在文字末追加資料。
ab+:以讀/寫方式開啟一個二進位制檔案,允許讀或在檔案末追加資料。

fclose()

與fopen()對應的是fclose(),fclose()用來關閉先前一個fopen()開啟的檔案. 此動作會讓緩衝區內的資料寫入檔案中,
並釋放系統所提供的檔案資源. 標頭檔案:#include <stdio.h> 定義函式:int fclose(FILE * stream);
【返回值】 若關檔案動作成功則返回0, 有錯誤發生時則返回EOF 並把錯誤程式碼存到errno

fwrite()

接下來介紹fwrite()函式,fwrite()函式的作用是向檔案流寫入資料。 其原型為:fwrite(void buffer, size,
count, FILE stream); 【引數解釋】 buffer:資料的原地址,可以通俗理解成需要寫入的內容。
size:每個單元的位元組數 count:單元的個數 stream:檔案流的指標
【返回值】
返回成功寫入的單元個數。如果小於count,則說明發生了錯誤,檔案流錯誤標誌位將被設定,隨後可以通過ferror()函式判斷。

注意:一開始接觸這個函式時很多人不太明白size和count的取值該如何決定。如果所需要輸入的位元組數為24,那麼size的值可以為4,count的值可以為6。同樣,size可以為8,count可以為3。總之,這兩個引數的乘積最好為所需要輸入的位元組數,若小於這個數會造成輸入缺失,若多於這個數會出現不必要的亂碼。

例項

以下將以一個簡單例項演示如何向檔案輸入資料,包含了fopen()和fwrite()的用法。

include <stdio.h>
int main()
{
   FILE *pFile;//定義檔案指標
   char str[]="What a wonderful world!";//需要輸入的資料
   int size = sizeof(str);//用sizeof()函式得出資料的位元組數
   pFile = fopen("testxt", "w");
   if(pFile == NULL)//判斷指標是否為空
   {
       printf("can not open the file");
       fclose(pFile);
       return 0;
   }
   fwrite(str,1,size,pFile);
   fclose(pFile);
   return 0;
}

相關文章