又是c语言复制多出字符的问题 高手们帮帮忙啊

来源:百度知道 编辑:UC知道 时间:2024/09/20 14:58:25
FILE *fp1,*fp2;

if((fp1=fopen("f:\\file1.txt","rb"))==NULL)
{
printf("cannt open the file.");
exit(1);
}
if((fp2=fopen("f:\\file2.txt","ab"))==NULL)
{
printf("cannt open the file.");
exit(1);
}
while(!feof(fp1))putc(fgetc(fp1),fp2);
fclose(fp1);
fclose(fp2);

我的file1.txt的内容是35467934
file2.txt 123456789
而运行后的结果是12345678935467934 在最后面由一个字符复制不出来 是y上面又两点

这是怎么回事啊

因为你是用嵌套写的,所以fgetc(fp1)到文件尾时,还没由feof(fp1)判断就已经被putc至fp2了,如果想要避免,可以这样写:
char a=fgetc(fp1);
while(!feof(fp1))
{

putc(a,fp2);
a=fgetc(fp1);
}

那是出错的。

循环过头了

多循环了一次。