因为feof判断文件结束是通过读取函数fread返回错误来识别的简单的说,如果fread读的刚好是最后一个元素,此次feof是判断不出到文件末尾的,所以就再次进入循环体此次fread会失败,但是没有做任何处理,继续执行的输出,其实这里输出的是上次读入的,因为本次读失败了解决方法可以在fread之后再加一个if(feof(fp))break;呵呵
while(1){其他不变。。。。。if(feof((fp)) break;}