首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C 語言中 EOF 與 feof() 的區別與正確使用場景

     編輯:關於C

EOF(End Of File)

  • 定義於 <stdio.h>,值通常為 -1(int 型別)。
  • 僅適用於文字檔:文字檔以 ASCII 碼儲存,範圍 0~255,不會出現 -1,故可用 -1 作為結束標記。
  • 二進位檔案中資料位元組可能出現 0xFF(即 -1),若用 EOF 判斷會誤判為檔案結束。

feof() 函數

  • 原型:int feof(FILE *stream)。
  • 返回值:檔案結束返回非 0(真),否則返回 0(假)。
  • 適用於文字檔與二進位檔,是判斷檔案結束的標準可移植方式。

常見錯誤用法

// 錯誤:feof() 在讀取失敗後才置位,會多處理一次
while (!feof(fp)) {
    fread(...);
    process(...);
}

// 正確:直接檢查讀取函數返回值
while (fread(buf, 1, sizeof(buf), fp) > 0) {
    process(buf);
}

總結

特性EOFfeof()
適用檔案類型僅文字檔文字檔 + 二進位檔
判斷時機讀取函數返回值檔案狀態旗標
可移植性依賴實現標準 C

建議:統一使用讀取函數的返回值判斷迴圈結束,避免直接使用 feof() 控制迴圈。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved