Что не так с getchar() или книгой Ритчи "Язык программирования Си"?

Потянуло на изучение Си. Для "первого прыжка в воду" чтобы научится плавать, выбрал книгу Брайана Кернигана и Денниса Ритчи "Язык программирования Си". Во время изучения материала столкнулся с непонятным явлением подсчёта символов (п. 1.5.2 из книги). Итак, подробнее:

(отрывок из книги)... применим также инструкцию forвместо while, чтобы продемонстрировать другой способнаписания цикла.

#include <stdio.h>

/* подсчет вводимых символов; 2-я версия */
main()
{    double nc;
    for (nc = 0; getchar() != EOF; ++nc)
        ;
    printf("%.0f\n", nc);
}`

Наконец, заметим, что если ввод не содержит ни одного символа, топри первом же обращении к getchar условие в while или for не будет выполнено и программа выдаст нуль, что и будет правильным результатом. Это важно. Одно из привлекательных свойств циклов while и for состоитв том, что условие проверяется до того, как выполняется тело цикла. Если ничего делать не надо, то ничего делаться и не будет, пусть даже тело цикла не выполнится ни разу.

Судя по книге, при нажатии на Enter - программа должна выдать 0. Что по итогам у меня - перенос строки и новый запрос на ввод от программы :)) enter image description here

На скриншоте выше - первые и последующие Enter`а - пустые, ввод никакой не осуществляется, помимо самого нажатия клавиши.

Что я делаю не так или чего я не понимаю?


Ответы (0 шт):