c - 将文件 a 复制到文件 b 时归档输出不正确

标签 c

因此,我尝试将 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/

相关文章:

c - 如果从 int 更改为 double,插入排序算法是否会受到影响?

clock_gettime 获取ns为0

c - MPI_Type_free 错误

C - 使用 gnu 的 Makefile,包含 2 个 .c 文件和 1 个 .h 文件

c - 传递 __VA_ARGS__ 时第一个参数是错误的

c - wait() 调用会以可预测的顺序执行吗?

c - GCC错误但VS没有错误

c - 带指针的结构赋值

c - 如何为国际象棋中的女王移动生成位板占用掩码?

c++ - C++中的Socket connect()函数解释/Reference operator and Pointers