Вы не получите никакого вывода, пока стандартный поток ввода не будет закрыт (либо с CTRL Z под Windows, либо с CTRL D под различные вкусы UNIX).
Новая строка - просто еще один символ.
Возможно, вы также захотите получить более свежую учебную книгу по Си. main()
больше не является одним из обязательных основных прототипов для ISO C, вы должны использовать один из:
int main(void) {}
int main(int argc, char *argv[]) {}
Кроме того, ваш код, показанный , не будет компилироваться, поскольку вы не завершаете строку формата printf
. Использование:
printf("%.0f\n", nc);
вместо:
printf("&.0f\n, nc);
Почему вы используете double
- тоже загадка, если вы не хотите обрабатывать действительно большие файлы - для этого я бы использовал int
или long
.
Вот код, который я буду использовать:
#include <stdio.h>
int main (void) {
long nc;
for (nc = 0; getchar() != EOF; ++nc)
;
printf("%ld\n", nc);
return 0;
}
, который производит следующий сеанс:
pax> countchars
Hello there.<ENTER>
My name is Bob.<ENTER>
<CTRL-D>
29
pax>