2012-04-07 2 views
1

У меня есть следующий код кода. Когда я нажимаю CTRL + D программа не распознает его как EOF.CTRL + D (EOF) не обнаружен в тривиальной программе с getchar()?

Несколько замечаний:

Я бегу Ubuntu 11.10 на плеере VMware Использование GCC и запустить программу из командной строки 'Запущенная -a' показывает ВФ =^D

спасибо за любую помощь ..

1 #include <stdio.h> 
    2 
    3 int main() 
    4 { 
    5 int c, nl; 
    6 nl = 0; 
    7 while ((c != getchar()) != EOF) 
    8 { 
    9  if (c == '\n') 
10   ++nl; 
11 } 
12 printf("line: %d\n", nl); 
13 
14 return 0; 
15 } 

ответ

6

Попробуйте

while ((c = getchar()) != EOF) 

В противном случае, вы сравниваете результат (c != getchar()) на EOF.

3

while ((c != getchar()) != EOF)

должен быть

while ((c = getchar()) != EOF)

5
while ((c != getchar()) != EOF) 

Это сравнивает значение переменной intc (который вы не инициализирован) для неравенства к значению, возвращаемому getchar() , Это сравнение дает 0 или 1, что не может быть равно EOF, что отрицательно.

Вы хотите заменить != (сравнение неравенства) на = (присвоение).

Смежные вопросы