Копирование строки из input.txt в output.txt с использованием функций fopen, fgetc, fput и fclose - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь просто скопировать строку, прочитав ее из 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 голосов
/ 20 ноября 2018

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

Таким образом, строка ниже:

 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.

...