Североамериканский кролик-зануда, капитан Смоллетт, Australorp №2
Здравствуйте, самостоятельно изучаю язык Си. Наткнулась на упражнение:
Напишите программу для подсчета пробелов, табуляций и новых строк.
Пользовала пример из той же книги для решения:


У меня получилось вот что:


И вот что получается:



У меня есть подозрения что не так, но сформулировать, а тем более исправить, не могу.
Помогите, пожалуйста.:(

@темы: Вопрос, С

Комментарии
02.08.2012 в 22:47

Ошибки:
1. Вы хотите считать символ, а не целое число. "char c" вместо "int c".
2. "/t" и "/n" - это слеш и буква. Управляющие символы идут как "\n" и "\t".
3. Если не стоит целью использовать именно С, я бы порекомендовал воспользоваться std::cin и std::cout (вместо getchar() и printf()).
02.08.2012 в 23:23

Североамериканский кролик-зануда, капитан Смоллетт, Australorp №2
dpleshakov,
спасибо большое:)
Если не стоит целью использовать именно С, я бы порекомендовал воспользоваться std::cin и std::cout (вместо getchar() и printf()).
Стоит-стоит. Пространство имен включила по привычке — в университете изучаю плюсы.
02.08.2012 в 23:33

IDDQD - Команда молодости нашей, команда, без которой мне не жить.
Стоит-стоит. Пространство имен включила по привычке — в университете изучаю плюсы.
Ну если так, то в шапке файла убрать #include и заменить на #include .
Второй момент - перенести финальный printf на строчку ниже. Тогда строка с результатом будет печататься один раз, а не на каждый прочитанный символ.
02.08.2012 в 23:55

У меня есть подозрения что не так, но сформулировать, а тем более исправить, не могу.
Шикарная фраза =)
02.08.2012 в 23:59

IDDQD - Команда молодости нашей, команда, без которой мне не жить.
Шикарная фраза =)
Как раз для персонажей с прокаченным до 50lvl скилом телепатии. ;)
03.08.2012 в 00:16

И тесно облакам.
Еще у вас последний printf внутри цикла, а должен быть снаружи.
03.08.2012 в 01:04

Североамериканский кролик-зануда, капитан Смоллетт, Australorp №2
Flex Ferrum, Ri,
Второй момент - перенести финальный printf на строчку ниже. Тогда строка с результатом будет печататься один раз, а не на каждый прочитанный символ.
Еще у вас последний printf внутри цикла, а должен быть снаружи.
Так оно ж из цикла не выйдет. Там условие EOF. Насколько я понимаю, раз EOF = -1, этот цикл конечный только формально, на практике — бесконечный.

smll,
Шикарная фраза =)
Я как та собачка: все понимает, только сказать не может)
03.08.2012 в 01:12

И тесно облакам.
Так оно ж из цикла не выйдет. Там условие EOF. Насколько я понимаю, раз EOF = -1, этот цикл конечный только формально, на практике — бесконечный.
Цикл будет выполняться до тех пор, пока не закончатся данные в стандартном вводе. На практике этого добиться несложно: либо вывести в стандартный ввод какой-нибудь текстовый файл, либо при вводе в консоли нажать ctrl+d (на винде, кажется, ctrl+z). Фактическое значение EOF = -1 на это вообще не влияет, и я не понимаю, к чему вы его здесь упомянули. В примере, который вы привели вначале, printf также расположен вне цикла.
03.08.2012 в 01:44

Североамериканский кролик-зануда, капитан Смоллетт, Australorp №2
Ri,
Фактическое значение EOF = -1 на это вообще не влияет, и я не понимаю, к чему вы его здесь упомянули.
Наверное, я все слишком буквально поняла в книге, простите.
В примере, который вы привели вначале, printf также расположен вне цикла.
Блин, проглядела. Тут же поняла откуда половина ошибок. Спасибо.