EOF не признается - PullRequest
       24

EOF не признается

0 голосов
/ 12 июня 2018

У меня есть программа, которая должна получать данные от пользователя, пока не получит EOF.

\n или пробелы считаются допустимыми символами, но консоль не распознает ни ^z, ни^d как EOF, и программа продолжает работать до тех пор, пока не будет остановлена ​​вручную.

Пробовал одновременно:

while (currChar != EOF)
{
scanf("%c", &currChar);
}

и:

scanf("%c", &currChar);
if (currChar==EOF)
 break;

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Ну, EOF не персонаж.Это целочисленная константа со значением -1.С учетом сказанного, если вы введете со значением EOF, ваша переменная char будет читать только значение - (минус) из -1.Вот почему цикл не остановится, они никогда не будут равны.

0 голосов
/ 12 июня 2018

scanf() не устанавливает переменную на EOF, когда она достигает конца ввода, она возвращает EOF.Таким образом, вы должны проверить значение функции.

while (scanf("%c", &currChar) != EOF) {
    ...
}
...