又是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上面又两点
这是怎么回事啊
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);
}
那是出错的。
循环过头了
多循环了一次。