[轉貼]
假設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
沒有留言:
張貼留言