這問題困擾我蠻久了
while(!feof(in)){
fread(&guy,sizeof(struct entry),1,in)
printf("%d %s %s %s %s\n",guy.idx,guy.name,guy.name2,guy.from,guy.to);
fwrite(&guy,sizeof(struct entry),1,out);
}
為什麼這樣寫會讓最後一筆資料讀了兩次呢?
有沒有甚麼改進的方法?
作者: ianlini (小林) 2010-02-18 14:28:00
我在程式一開始就有執行跟這個一模一樣程式碼用來複製檔案可是不管在自己電腦還是批改娘 都是得到正確的結果耶= =我試過先fread一次再寫while(裡面read和write反過來)得到的結果一樣= =
作者: MrGreat (阿臻) 2010-02-20 07:29:00
我也曾經出現過這種情況,可能的原因是讀完最後一筆entry還沒讀到EOF,可能還有換行、空白之類的,下次fread時才EOF,所以會寫入既有的(最後一筆資料),造成重覆,大概吧