因此,我尝试将 f1.txt 复制到 f2.txt,例如,如果 f1.txt 是“Hello”而 f2.txt 是“World”,则 f2.txt 文件应更新为“HelloWorld”,但是相反,它变成了“HelloWorldÿ”。 为什么会发生这种情况?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int ch;
FILE *fp1,*fp2;
fp1 = fopen ("f1.txt","r");
fp2 = fopen ("f2.txt","a");
if (fp1==NULL)
{
printf("ERROR please enter correct file name");
exit(0);
}
while (ch!=EOF)
{
ch = fgetc(fp1);
fputc(ch,fp2);
}
fclose(fp1);
fclose(fp2);
}```
最佳答案
观察你的代码。考虑一下,经过多次迭代后,fgetc()
已读取文件的所有字符。您的 while 语句将再次执行一次,它将获得 EOF 并将其写入目标文件。然后它将停止迭代。正确的代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int ch;
FILE* fp1, * fp2;
fp1 = fopen("f1.txt", "r");
fp2 = fopen("f2.txt", "a");
if (fp1 == NULL)
{
printf("ERROR please enter correct file name");
exit(0);
}
while ((ch = fgetc(fp1)) != EOF)
{
fputc(ch, fp2);
}
fclose(fp1);
fclose(fp2);
}
关于c - 将文件 a 复制到文件 b 时归档输出不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58682560/