Давайте рассмотрим ваш код:
#include <stdio.h>
Все идет нормально...
main()
{
- Функция
main()
всегда возвращает int
. Всегда.
- Объявление функций без типа возвращаемого значения — дурной тон, так как по умолчанию используется
int
, но люди не помнят об этом при чтении кода.
Идем дальше...
long nc;
nc = 0;
Хорошая форма. Переменная инициализируется перед использованием.
while (getchar() != EOF)
++nc;
Это немного сложно. Но шаг за шагом.
- Функция
getchar
возвращает int
из стандартного ввода.
- Затем это значение сравнивается с
EOF
.
- Если значение
int
из стандартного ввода не равно EOF
, переменная nc
увеличивается.
Таким образом, чтобы выйти из цикла while
, из стандартного ввода необходимо сгенерировать EOF.
Примечание. Ни одно из значений, считанных из стандартного ввода, сохраняется. Каждое значение отбрасывается после вычисления выражения.
Стиль: я предлагаю использовать '{' и '}' после каждого оператора while
. Это безопасная привычка.
printf("%ld\n", nc);
Приведенный выше оператор печатает (отображает) значение в nc
. Значение в nc
представляет собой количество символов, считанных со стандартного ввода. Этот оператор не отображает символы из стандартного ввода.
}
Наконец, программа main
должна вернуть значение операционной системе. Два переносимых значения — EXIT_SUCCESS
и EXIT_FAILURE
, которые определены в stdlib.h
. Указание одного из этих значений также было бы хорошей привычкой.
Кстати, в опубликованном вами примере нет putchar
(который я скопировал в этот ответ).
person
Thomas Matthews
schedule
03.02.2010
putchar()
ты говоришь? - person mob   schedule 03.02.2010