首页 > 解决方案 > 使用 fopen、fgetc、fput 和 fclose 函数将字符串从 input.txt 复制到 output.txt

问题描述

我试图通过从 input.txt 读取字符串并将其复制到 output.txt 来简单地复制它。我面临的问题是输出文件不包含输入文件的任何字母。它只包含字母。

我究竟做错了什么?

#include <stdio.h>

void main(void) {
    char input[45] = "S:/Master/M_32561/9000_A/B11-01/input.txt",               
         output[45] = "S:/Master/M_32561/9000_A/B11-01/output.txt";

    FILE *dtzgr_0,  /* Input-Pointer */
         *dtzgr_1;  /* Output-Pointer */

    dtzgr_0 = fopen(input, "r");

    if(dtzgr_0 != NULL) {
        dtzgr_1 = fopen(output, "w");

        int c;

        while(c = fgetc(dtzgr_0) != EOF)
            fputc(c, dtzgr_1);

        fclose(dtzgr_1);
    }
    else
        printf("Can't read %s.", input);

    fclose(dtzgr_0);
}

输出.txt

标签: cfopenfclosefgetc

解决方案


运算符优先级表中!=是超前的=

所以下面一行:

 while(c = fgetc(dtzgr_0) != EOF)

相当于:

 while(c = (fgetc(dtzgr_0) != EOF))

如果返回的不是,那么c将被赋值为 0 。fgetcEOF

您必须将上面的行更改为:

 while((c = fgetc(dtzgr_0)) != EOF)

然后,您将返回值从fgetcto分配,c然后将其与EOF.


推荐阅读