Почему getchar() не работает на меня?


Я только что начал программировать на языке Си и работаю над языком программирования Си Брайана В. Кернигана и Денниса М. Ричи.

Один из первых примеров-подсчет символов, и следующая программа дается,но когда я ввожу строку, результат не выводится.

#include <stdio.h>

main()
{
   long nc;

   nc = 0;
   while (getchar() != EOF)
          ++nc; 
   printf("%ldn",nc);
 }

Почему это не работает?

4 4

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.

Вы должны отправить EOF в программу, нажав CTRL+D (для linux) или CTRL+Z (для Windows), чтобы завершить цикл while.