對於在檔案操作時,怎麼樣判斷檔案是否結束,以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 這個函式來判斷檔案是否為空或者是否讀到檔案結尾了,也會在使用這個函式的過程中遇到一些問題,如不能準確的...