Почему getchar() не работает на меня?
Я только что начал программировать на языке Си и работаю над языком программирования Си Брайана В. Кернигана и Денниса М. Ричи.
Один из первых примеров-подсчет символов, и следующая программа дается,но когда я ввожу строку, результат не выводится.
#include <stdio.h>
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%ldn",nc);
}
Почему это не работает?
4 ответа:
Вы должны закончить ввод. Ваша программа будет считать символы до тех пор, пока не встретится
EOF
.EOF
, в клавиатуре, можно отправить, нажав Ctrl-Z затем ENTER, Если вы находитесь в Windows, или Ctrl-D затем ENTER, Если вы находитесь в Linux / OS X.
В дополнение к ответам, которые были упомянуты, вот как заставить вашу программу показывать результаты при нажатии
Enter
#include <stdio.h> main() { long nc; nc = 0; while (getchar() != '\n') ++nc; printf("%ld\n",nc); }
getchar()
является буферизованным входом. Так как он буферизован,The control will wait until you press
Введите с клавиатуры клавишу . В вашей программе вы проверяете наличиеEOF
, делаяwhile (getchar() != EOF)
В windows, Если вы хотите EOF, вы должны ввести комбинацию из 2 клавиш. то есть Ctrl+Z . Если вы находитесь на LINUX, то EOF-это комбинация из 2 клавиш Ctrl+D
Как было сказано ранее, управление будет ждать на консоли, пока вы не нажмете Enter, поэтому вам нужно нажать
- Ctrl+Z введите - в windows.
- Ctrl+D Enter - на LINUX.