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

讀取資料...處理...

}

這樣就可以了

 

arrow
arrow
    全站熱搜

    angledark0123 發表在 痞客邦 留言(0) 人氣()