C語言檔案讀取結束判斷正確方式

2021-10-25 21:51:12 字數 987 閱讀 4322

對於在檔案操作時,怎麼樣判斷檔案是否結束,以feof來判斷檔案讀取結束是否正確?

對與返回值的描述是:

feof函式在第一次讀取操作後返回乙個非零值,該操作試圖讀取檔案的末尾。如果當前位置不是檔案結尾,則返回0。沒有錯誤返回。

仔細讀最後一句話,我們得到的資訊是,如果當函式對檔案流的操作失敗時,它是不能正確丟擲錯誤的,它僅僅只能判斷檔案是否結束。

即在檔案讀取過程中,避免用feof函式的返回值來判斷檔案讀取是否結束,而是應用於當前檔案讀取結束時,判斷時讀取結束還是遇到檔案尾結束

對於任意的流操作函式,都有對應的返回值來

如以下**

end =

fscanf

(fp,

"%d %s %s",&

(t->p.id),&

(t->p.name),&

(t->p.telnum));

if(end ==

eof)

end = fgets

if(end ==

null

)

對應函式的返回值

fgets是否為null;

fgetc是否為eof;

fscanf是否為eof;

ⅱ. 二進位制檔案的讀取是否結束,應該判斷:

|fread:返回值是否小於實際要讀取的個數

然後在讀取結束後再總的判斷是因何而結束:

ⅲ.

if

(ferror

(pf)

)elseif(

feof

(fp)

)

ferror:若流上無錯誤發生,返回0,否則返回非零值

用對應流操作函式的返回值來判斷檔案是否結束

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

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

C 檔案讀取方式

1 使用file讀取 file fp tfopen szxmlfilepath,l rb if fp null return fseek fp,0,seek end uint nlen ftell fp fseek fp,0,seek set 寬字元型別 wchar t pstr read new ...

C 判斷讀取檔案尾

主要在於eof 不只是讀取檔案的最後乙個字元,它會接著往後讀取,如果此函式返回ture時,則此時返回的檔案結束符0xff才是真正的結尾。具體內容如下 在使用c c 讀檔案的時候,一定都使用過eof 這個函式來判斷檔案是否為空或者是否讀到檔案結尾了,也會在使用這個函式的過程中遇到一些問題,如不能準確的...