close
這似乎也是很多人會遇到的問題,就是使用feof最後一行有時候會出現多讀一次的狀況
但其實問題是這樣,在最後一行後才是eof,在 C 的函式下, 只有當上一個讀取已經產生 end of file 錯誤的時候, feof() 才會傳回 true
所以在最後一行讀取後,feof 並不成立,然後直到一次read fai,eof才會被讀到 ,造成多while 一次
解決這個問題的方法很簡單 大部份的輸入函式都會回傳包括 end-of-file 的錯誤訊息, 可以直接利用這個訊息來判斷, 而不需使用 feof(). 在大部份情況下, 直接把讀取資料的部份取代 eof 測試的部份:
如這次我把本來的
while(feof(fp) {
讀取資料...處理...
}
換成
while( fscanf(....) != EOF) {
讀取資料...處理...
}
這樣就可以了
全站熱搜