Копирование строки из 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);
}
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
,