我编写了一段 C 代码,用于将文件数据从一个文件复制到另一个文件。以下代码工作正常。但编译器仍然显示错误答案,因为执行时间高达 280.0,下面是我的代码
#include<stdio.h>
int main()
{
FILE *fp1,*fp2;
char ch,fname1[20],fname2[20];
printf("Enter the input file name\n");
gets(fname1);
printf("Enter the output file name\n");
gets(fname2);
fp1=fopen(fname1,"r");
fp2=fopen(fname2,"w");
do
{
ch=fgetc(fp1);
fputc(ch,fp2);
}
while(ch!=EOF);
return 0;
}
最佳答案
您的程序将始终输出 EOF 字符。
fgetc
实际上不返回字符,而是返回 int
。
EOF 实际上是-1。当您写入它时,一个额外的字节(0xFF)将被写入到输出文件中。
正确的代码如下:
while ((ch = fgetc(fp1)) != EOF)
{
fputc(ch,fp2);
}
您可能会争论这段代码是否优雅,但重点是您不应该不打印 EOF 字符。
关于C 程序文件复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37377425/