2009年5月12日 星期二

有關fscanf的讀檔問題

有關fscanf的讀檔問題

[轉貼]

假設file.txt內容為:
2,4,6
1,3,5

int value[6];

while (fscanf(fp,"%d%*c";value) != EOF)
{
    printf("%d\n", value);
}

%*【類型規範】
就是設法用該規範的類型來讀一個輸入,
並嘗試轉換成規範所顯示的類型,但不把結果存入,所以不需相應的引數。
簡單的說,「讀」但「跳過」一個 field。

while(!feof()) 的寫法
大部份這樣子寫的 loop 都是錯誤的。
End-of-file只有讀超出最後一筆資料後才會設定。
最後一筆資料後面如果是個 '\n',當讀了最後一個 '5' 之後,eof還不會設定。
所以程式還會再讀多一次,這第二次的讀取才會造成 eof 的讀取錯誤,
但 value 還是保持上一次讀的值,所以最後一筆資料會重複處理。

ref:
Here

沒有留言:

張貼留言