使用fopen,fgetc,fput和fclose函数将字符串从input.txt复制到output.txt

时间:2018-11-20 13:15:18

标签: c fopen fclose fgetc

我试图通过从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);
}

output.txt

1 个答案:

答案 0 :(得分:0)

operator precedence table中,!==之前。

所以下面一行:

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

等效于:

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

因此,如果c的返回值不是fgetc,则EOF的值将为0。

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

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

然后,您将返回值从fgetc分配给c,然后将其与EOF进行比较。