Копирование строки из input.txt в output.txt с использованием функций fopen, fgetc, fput и fclose

Я пытаюсь просто скопировать строку, читая ее из 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 ответ

В таблице приоритетов операторов!= впереди =,

Итак, строка ниже:

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

эквивалентно:

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

Так c будет присвоено значение 0, если возврат из fgetc не является EOF,

Вы должны изменить вышеприведенную строку следующим образом:

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

Затем вы назначите возвращаемое значение из fgetc в c и только потом сравнивать EOF,

Другие вопросы по тегам