feof(fp) 的测定应在 读了以后测定,当读语句读到文件结束符,feof 才能发现 EOF, feof(fp) 为真。读语句读到文件结束符,表示没有读到数据,如果你 这时 尚未判断 是否 EOF,却又做打印显示数据,就有乱码了。
保险的循环方法是:
while (1){
读数据语句
if (feof(fp)) break;
打印数据
}
有些 读数语句 自身也可测定 是否 遇到 EOF, 也可以作判断和转移。
文件若作可读写方式打开,fwrite 完,可以 rewind 到文件头 改为从头读,或fseek到正确位置开始读。fread 直接接着 fwrite ,文件指针位置可能不是你要的。
ch=fgetc(fp);
while(feof(fp)==0)
{
//操作放在这
ch=fgetc(fp);
}