C语言 文件复制,源文件最后一行是空行时,复制出现有关问题,目标文件最后一行复制两行?
C语言 文件复制,源文件最后一行是空行时,复制出现问题,目标文件最后一行复制两行????????????????????????????????????
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最后一行输出的空行。
------解决方案--------------------
在赋值之前先清一下
while(!feof(fp))
{
memset( buff, 0x00, sizeof(buff));
fgets(buff,100,fp);
------解决方案--------------------
老生常谈
当你到了文件最后一行时,feof并不知道,它还没有获得信息,只有你再一次读取时,它才知道确实到末尾了,但是导致你多进行了一次操作
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并不知道,它还没有获得信息,只有你再一次读取时,它才知道确实到末尾了,但是导致你多进行了一次操作