для (nc = 0; getchar ()! = EOF; ++ nc);
the ';'в конце строки, возможно, не то, что вы хотите, из-за этого тело для пусто
, поэтому printf("%d\n", nc);
выполняется только один раз, а не несколько, и длячто вам сначала нужно выйти из для , чтобы достичь EOF
Какая у вас ОС, что вы делаете, чтобы получить EOF?
Если вы никогда не достигнетеEOF нормально ничего не печатать
Если вы работаете под Linux / Unix, вы можете сделать echo blahblah | ./yourprog
и да, в этом случае вы напечатаете 9 (из-за новой строки, 8, если echo -n blahblah
)
Под Windows не выполняйте свой код с помощью кодовых блоков, выполняйте его непосредственно в терминале, кодовые блоки и другие IDE имеют непредвиденное поведение на вводе / выводе