Что не так с 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`а - пустые, ввод никакой не осуществляется, помимо самого нажатия клавиши.
Что я делаю не так или чего я не понимаю?