Очень простой пример кода «Язык программирования C» не работает, как ожидалось? - PullRequest
1 голос
/ 29 ноября 2011

Я опытный Java-разработчик, и у меня много проблем с изучением языка Си для изучения информатики.Я пробую это с книгой "Язык программирования Си", которую многие рекомендуют.

Но у меня есть проблемы с простейшими вещами, такими как EOF в сочетании с getchar ().Вот код:

#include<stdio.h>
main()
{
    int i = 0;
    while (getchar() != EOF)
    {
        ++i;
        printf("Count of characters is %d", i);
    }
}

Я работаю с Mac OS X Lion и использую команду "cc" с "./a.out" для запуска в терминале, как описано в книге для запускафайл.И вот что я получаю:

  • Всегда считая один символ слишком много
  • цикл while никогда не заканчивается!он просто ждет другого ввода после достижения конца ввода ...

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

Ответы [ 2 ]

4 голосов
/ 29 ноября 2011

Всегда слишком много считаю одним персонажем

Это может быть символ новой строки (ввод / возврат).

цикл while никогда не заканчивается! он просто ждет другого ввода после достижение конца ввода

Скорее всего, вы не сигнализируете о конце ввода. Вы должны использовать CTRL-D для этого.

0 голосов
/ 29 ноября 2011

Когда вы вводите символ, такой как «6», и нажимаете клавишу ввода (что равно \ n), то отправляется команда «6 \ n», поэтому это 2 символа. Если вы просто нажмете ввод, то значение «i» будет увеличено на 1.

EOF означает конец файла и его эквивалент ctrld + D. Это полезно, если вы читаете текстовый файл. Иначе это то же самое, что сказать «навсегда».

...