feof判斷檔案結束

2021-08-26 15:22:01 字數 458 閱讀 1473

fgets 是讀取檔案中的一行,當讀檔案過程中發生錯誤或者讀到檔案尾時,返回null,所以不能使用fgets==null來判斷是否到了檔案尾,需要結合feof(null) 才能確定是否到了檔案尾

while(!feof(fp))

fgets(temp,100,fp);

operation(temp);

這種判斷是否到了檔案尾的方式在存在錯誤的,因為fgets函式是遇到回車『\r』符返回的,所以在讀到最後一行時,它的檔案指標並沒有指向檔案尾,而是指向』\r』處,,feof 依然返回0(檔案還沒結束 ),所以這時operations還是會執行

應該修改為這種形式

while(1)

fgets(temp,100,fp);
if(feof(fp))

break;
operation(temp);

c語言 判斷檔案結束問題 feof

最近做開發的時候用到c語言檔案的讀寫函式fread 採用while feof fp 來控制迴圈,結果發現每次讀取資料的時候總會把最後乙個資料單元讀取兩次,很是不解。後來查詢資料發現,原來fread 在讀到檔案最後乙個位元組時,feof fp 還是為0值,此時while feof fp 的控制條件依然...

判斷檔案結束有兩種方法 EOF和feof

判斷檔案結束有兩種方法 eof和feof 檢視stdio.h可以看到如下定義 由此可以看出,這兩種方式的原理是不同的。有人說eof只能用於文字檔案,其實不然,還要看定義的變數的型別。下面這段程式對文字檔案和二進位制檔案都可以 如果讀到了ff,由於c定義為int型,所以實際上c 0x000000ff,...

判斷檔案結束有兩種方法 EOF和feof

判斷檔案結束有兩種方法 eof和feof 檢視stdio.h可以看到如下定義 cpp view plain copy print?define eof 1 define ioeof 0x0010 define feof stream stream flag ioeo 由此可以看出,這兩種方式的原理是...