我上网查了下资料说
用feof时,遇到结尾返回还是0,要再读入一字节(文件结束标志-1)才返回真
这个是我证实了的,确实如上
但奇怪的是,我按如下处理后,还是大一字节
#include <stdio.h>
int main()
{ FILE *sfp,*dfp;
long filesize,i=0;
if (sfp=fopen("d:/a.abc","rb"))
{ dfp=fopen("d: .abc","wb");
fseek(sfp,0L,SEEK_END);
filesize=ftell(sfp); /*单位字节*/
printf("文件大小: %ld 字节\n",filesize);
rewind(sfp);
puts("文件处理中....");
while(!feof(sfp))
{ if (i<filesize)
fputc(fgetc(sfp),dfp);
++i;
}
fclose(sfp);
fclose(dfp);
}
return 0;
}
而把条件改成
while(!feof(sfp))
{ if (i<filesize)
fputc(fgetc(sfp),dfp);
else
break;
++i;
}
结果又正确了,这是咋回事