C语言 文件复制,源文件最后一行是空行时,复制出现有关问题,目标文件最后一行复制两行?

C语言 文件复制,源文件最后一行是空行时,复制出现问题,目标文件最后一行复制两行????????????????????????????????????
本帖最后由 jameszhanglei123 于 2011-05-26 17:20:17 编辑
zhang.txt:
jo 122 2.000000 a

john 12 3.000000 z
                   //最后一行空行

zhang1.txt输出结果:
jo 122 2.000000 a
john 12 3.000000 z
john 12 3.000000 z

             //最后一行空行。

为什么john 12 3.000000 z复制了两次?
1、怎样输出和zhang.txt一样,正确的结果
2、怎样处理掉zhang1.txt最后一行输出的空行。




#include <stdio.h>
#include <string.h>
int main(void)
{
char buff[100];
FILE *fp,*fp1;
fp=fopen("zhang.txt","r");
fp1=fopen("zhang1.txt","w+");

while(!feof(fp)){
fgets(buff,100,fp);

if(buff[0]!='\n'){
fputs(buff,fp1);

}

}

fclose(fp);
fclose(fp1);
printf("\n");

return 0;
}


------解决方案--------------------
在赋值之前先清一下 
 while(!feof(fp))
{
memset( buff, 0x00, sizeof(buff));
        fgets(buff,100,fp);
------解决方案--------------------
老生常谈
当你到了文件最后一行时,feof并不知道,它还没有获得信息,只有你再一次读取时,它才知道确实到末尾了,但是导致你多进行了一次操作