这问题困扰我蛮久了
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,所以会写入既有的(最后一笔资料),造成重复,大概吧