невозможно прочитать символ EOF в C - PullRequest
1 голос
/ 13 февраля 2012

У меня проблема с чтением символа EOF для последнего ввода в C

j=0;       
while(*(name2+j)!='\n'){
    if(*(name2+j) == ' '){
        j++;
        continue;
    }
    d[tolower(*(name2+j))]++;
    j++;
}

Для последнего ввода нет символа новой строки, значение j устанавливается на очень большое числодля очень маленькой строки.Итак, чтобы рассмотреть конец файла, я изменил условие while на

while(*(name2+j)!='\n' && (*(name2+j))!=EOF)

, но все же у меня возникла та же проблема.Может кто-нибудь сказать, если я что-то здесь упускаю?Спасибо.

Ответы [ 2 ]

4 голосов
/ 13 февраля 2012

EOF - это целочисленное значение, выходящее за пределы диапазона char (поскольку его цель - указать, что нет char), поэтому, если вы хотите иметь возможность сравниватьзначение до EOF, тогда вам нужно извлечь и сохранить это значение как int, а не как char.

2 голосов
/ 13 февраля 2012

Как вы объявили name2 и установили его? char не может содержать EOF, но если вы получили его с помощью стандартных функций ввода, вы должны иметь '\0' для его завершения. если это так, просто измените условие на

while (name2[j] && name2[j]!='\n')
...