Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Изучаю книгу Керниган и Ричи "Программирование на C".

Юрий Демченко Профи (627), закрыт 11 лет назад
Дошел до главы 1.5.3. Подсчет строк. В книге представлен следующий код:

#include <stdio.h>

/* подсчет строк входного потока */
main()
{
int c, nl;

nl = 0;
while((c=getchar())!=EOF)
if(c == 'V')
++nl;
printf("%d\n", nl);
}
При чем сказано, что V, заключенная в одинарные кавычки - это символьная константа. Пробую скомпилировать программу, все нормально, но при подсчете строк выдает 0. Пробую второй вариант: заменить V на эскейп последовательность \n - все работает. Подскажите пожалуйста, если знаете, в чем может быть проблема Ведь в книге указано, что первый вариант также является рабочим.
Дополнен 11 лет назад
По моему, проблема в условии, if, мне кажется что компилятор вас не понял :-) разделите условие на две части_ сначала получаем переменную, а потом уже сравниваем

Если б это я писал, то может быть, но это писали авторы. Вот что интересно. -)
Дополнен 11 лет назад
Не ломай голову. Скорее всего в книге просто опечатка и нужно действительно писать \n

Скорее всего так и есть. Поскольку такой константы я не нахожу. Спасибо за ответ! -)
Лучший ответ
0xDD Искусственный Интеллект (149050) 11 лет назад
Не ломай голову. Скорее всего в книге просто опечатка и нужно действительно писать \n
Остальные ответы
c0da Гуру (4919) 11 лет назад
По моему, проблема в условии, if, мне кажется что компилятор вас не понял :-) разделите условие на две части_ сначала получаем переменную, а потом уже сравниваем
И.А. Голованов Оракул (75397) 11 лет назад
"Если б это я писал, то может быть, но это писали авторы. "

Нихрена!! .
в 1.5.3 и окрестностях нет такого кода.
аккуратно перечитай
Радамир Горынин Мыслитель (6387) 11 лет назад
Бред какой-то. Он у вас будет считать только символы V и больше ничего. Заменяй V на \n и компилируй.

Я вот открыл книжку и не нахожу такого.
И кстати, EOF там в 'ковычках'
Источник: Совет на будущее замени EOF на ~ . Иначе вот что со мной было: http://otvet.mail.ru/question/80406085/
Похожие вопросы