2016-03-15 2 views
2

Вот мой проблемноПодсчет числа строк в строки ввода в C

char c,int nl=1; 
printf("Enter string"); 
while((c=getchar()) != EOF) 
{ 
    if(c=='\n') 
     ++nl; 
} 
printf("Number of lines=%d",nl); 


Нет ошибок. Но когда я даю ввод, он продолжает принимать входные данные (не выходит из экрана консоли). Почему компилятор не может прочитать значение EOF? Я также пробовал while((c=getchar())!='\0'), но не работает!

+5

Изменить тип 'c' из' char' в 'int' –

+1

Если вход не поступает из файла, вы можете завершить его с помощью одного из Crl-D (Unix) или Ctrl-Z (Windows). Если вы этого не сделаете, интерактивная оболочка будет просто ждать ввода большего количества. –

+1

. [эта ссылка 'getchar'] (http://en.cppreference.com/w/c/io/getchar). Обратите особое внимание на возвращаемый тип функции. –

ответ

1

char не в состоянии хранить EOF. Используйте int для сохранения возвращаемого значения getchar().

Try изменения

char c,int nl=1; 

в

int c,nl=1; 
+0

То же самое происходит. Это не сломается. – Gon

1

Вы должны объявить c, как int вместо char.

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