大神,c语言,我要把一个txt格式的文件里的内容复制到另一个txt文件中

int main()
{
//将一个磁盘文件中的信息复制到另一个磁盘中
FILE *fp1,*fp2;
char ch,file1[20],file2[10];
printf("请输入你想打开的已存在文件的名字:");
scanf("%s",file1);
fflush(stdin);
printf("请输入你想新建的文件的名字:");
scanf("%s",file2);
fflush(stdin);
if((fp1=fopen(file1,"r"))==NULL) {
printf("cannot open file.\n");
exit(0);
}
if((fp2=fopen(file2,"w"))==NULL) {
printf("cannot open file.\n");
exit(0);
}
while(!feof(fp1)){
fputc(fgetc(fp1),fp2);
putchar(fgetc(fp1));
}
fclose(fp1);
fclose(fp2);
system("PAUSE");
return 0;
}
我的第一个txt文件中的内容是“i love you!”而复制过来的是“ilv o! ”而屏幕上显示的是“ oeyu”,这是什么状况

您好,您这个程序的问题在于 while中 fgetc 的调用
while(!feof(fp1)){
fputc(fgetc(fp1),fp2); //此处已经调用了fgetc(fp1),得到一个字符
putchar(fgetc(fp1));//再次调用,取下一个字符
}

所以会导致1,3,5,7....被用来写入文件,而2,4,6,8...被显示
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-07
因为你putchar又调用了一次fgetc。这就会读取下一个字符了。然后你再往文件里面写就是写的第三个字符了,也就是说你13579的字符写到了文件,而2468的字符打印到标准输出也就是屏幕了。你把putchar这行去掉就行了。
相似回答