Почему конец файла не найден при перемещении символов? - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь вывести содержимое файла, но мне нужно добавить +20 к каждому символу, потому что символы в файле перемещаются на -20. Вывод содержимого работает, но до конца файла, Ù печатается в al oop. Кто-нибудь может мне помочь с моим кодом?

    while ((holder = (fgetc(dateiGlob)-ENC_NUM)) != EOF) // ENC_Num = 20
    {
        if (holder == ';') // Replace ; 
        {
            printf("\n");
            holder = '\0';
        }

        if (holder == '/') // Replace /
        {
            printf(" | Anmerkung: ");
            holder = '\0';
        }

        putchar(holder); // Print in stdout
    }

    printf("\n");
}

Когда ENC_NUM установлен в 0, EOF снова найден. Что мне нужно изменить? Спасибо!

1 Ответ

2 голосов
/ 27 января 2020

Внимательно посмотрите на ваше условие while.

(fgetc(dateiGlob) - ENC_NUM) != EOF

Если вы установите ENC_NUM = 0, условие станет fgetc(dateiGlob) != EOF, что вам нужно, чтобы прекратить чтение файла, когда вы находитесь в его конец.

Теперь, если вы хотите изменить левую часть условия (сделав ENC_NUM ненулевое целое число), вам также необходимо изменить его правую сторону таким же образом (чтобы чтобы сохранить логику c):

(fgetc(dateiGlob) - ENC_NUM) != (EOF - ENC_NUM)
//                ^^^^^^^^^          ^^^^^^^^^
...