fgets與feof 判斷檔案結尾

2021-06-22 11:51:24 字數 435 閱讀 6427

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);

}

feof判斷檔案結束

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

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

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

C語言 EOF和feof 判斷檔案結尾的區別

由於字元的ascii碼不可能出現 1,因此eof定義為 1 是合適的 當以文字形式讀取檔案內容,讀入的字元值等於eof時,表示讀入的已不是正常的字元而是檔案結束符 當以二進位制形式讀取檔案內容,資訊都是以數值方式存在的,eof的值可能就是所要處理的二進位制檔案中的資訊,此時需要用 feof 來判斷是...