回覆列表
  • 1 # hykhl16757

    C語言的EOF函式,主要工作是來判斷檔案是否結束。 比如,下面這段程式碼就表示,如果不是檔案結尾,就把檔案的內容複製到螢幕上。  int c;  while ((c = fgetc(fp)) != EOF) {    putchar (c);  } EOF是End Of File 的縮寫,EOF不是特殊字元,而是c語言中標準庫中定義的宏,定義為:#define EOF (-1); feof() 用於測試流檔案的結束,有宏和函式兩種定義:宏定義: #define feof(_stream) ((_stream)->_flag & _IOEOF),其中_IOEOF的為:#define _IOEOF 0x0010函式定義:int feof( FILE *stream );EOF的值為-1,是int型別資料,在32位系統中,可以表示為0xFFFFFFFF; EOF 不是一個字元,也不是檔案中實際存在的內容。EOF不但能表示讀檔案到了結尾這一狀態,它還能表示 I/O 操作中的讀、寫錯誤(可以用 ferror() 來檢測)以及其它一些關聯操作的錯誤狀態; feof()只用於測試流檔案的結束,當到達結尾時,返回非0;當檔案內部位置指標指向檔案結束時,並未立即置位FILE結構中的檔案結束標記,只有再執行一次讀檔案操作,才會置位結束標誌,此後呼叫feof才會返回為真。 函式如fgetc或getc返回EOF並不一定表示檔案結束,當讀取檔案出錯時也會返回EOF,僅憑返回-1就認為檔案結束是錯誤的;正因為如此,我們需要feof()來判斷檔案是否結束,當然用feof()來判斷檔案結束時也需要判斷讀取操作是否出錯,這時可以用ferror()來判斷,當其為真時表示有錯誤發生。在實際的程式中,應該每執行一次檔案操作,就用用ferror函式檢測是否出錯。

  • 中秋節和大豐收的關聯?
  • 花椒啥時移栽好成活?