Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
unclemike
0 / 0 / 0
Регистрация: 12.10.2016
Сообщений: 5
1

Программа "Подсчёт количества строк" (K&R)

21.10.2016, 16:25. Просмотров 804. Ответов 7
Метки нет (Все метки)

Доброго времени суток!

Простенькое упражнение из Кернигана и Ритчи "подсчёт кол-ва строк"... Вопрос!
Почему после компиляции при нажатии на любую клавишу в консоль печатается соответствующий символ, хотя
в теле цикла нет putchar(). Спасибо


C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
int main()
{
    int kc; /* переменная, хранящая кол-во строк*/
    int c; /*переменная, хранящая вводимый символ*/
 
    kc=0;
   while((c=getchar())!=EOF)
    
        if (c=='\n')
        {
            ++kc;
            printf("%d\n",kc);
        }
    
    return 0;
    }
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2016, 16:25
Ответы с готовыми решениями:

Подсчёт количества символов и количества строк в файле
Нужно написать программу, которая запрашивает у пользователя имя (адрес) текстового файла, далее...

Создать запись "Двигатель", которая содержит элементы "Название", "Мощность", "Скорость", "Цена"
Создать запись &quot;Двигатель&quot;, которая содержит элементы &quot;Название&quot;, &quot;Мощность&quot;, &quot;Скорость&quot;,...

Зачем нужны "%ld" и знаки "&"?
Здравствуйте, дорогие форумчане! Вчера вечером решил начать изучать c++, до этого изучал web...

Вычислить общее количество строк в файлах с расширениями "pas" и "cpp"
есть задание: Составить программу, которая для заданного начального каталогов файловой системы...

Вычислить общее количество строк в файлах с расширениями "pas" и "cpp"
Составить программу, которая для заданного начального каталогов файловой системы вычисляет общее...

7
shvyrevvg
746 / 555 / 278
Регистрация: 12.05.2016
Сообщений: 1,611
21.10.2016, 16:32 2
unclemike, а Вы как представляете ввод? Вы нажимаете клавиши и ничего не должно печататься?
0
unclemike
0 / 0 / 0
Регистрация: 12.10.2016
Сообщений: 5
21.10.2016, 17:07  [ТС] 3
Отвечая на резонный вопрос, скажу, что представляю ввод данных ровно так, как это приведено в букваре. а именно...


Стандартная библиотека включает несколько функций для чтения и записи одного символа. Простейшие из
них — getchar и putchar. За одно обращение к getchar считывается следующий символ ввода из
текстового потока, и этот символ выдается в качестве результата. Так, после выполнения
с = getchar()
переменная c содержит очередной символ ввода. Обычно символы поступают с клавиатуры.
Обращение к putchar приводит к печати одного символа. Так,
putchar (c)
напечатает содержимое целой переменной c в виде символа (обычно на экране).
0
LFC
730 / 535 / 416
Регистрация: 17.09.2015
Сообщений: 1,598
21.10.2016, 17:52 4
unclemike, если хотите чтоб не выводило на экран,то надо пользоваться getch() из библиотеки conio.h
2
shvyrevvg
746 / 555 / 278
Регистрация: 12.05.2016
Сообщений: 1,611
21.10.2016, 18:19 5
Лучший ответ Сообщение было отмечено unclemike как решение

Решение

unclemike, согласен, не везде написано, что используется эхоотображение(по идее через SetConsoleMode() можно отключить(win)). Но логично, что мы должны видеть что вводим. Как уже написал LFC, без эхоотображения используйте getch().
1
Kukuxumushu
1772 / 621 / 116
Регистрация: 13.06.2015
Сообщений: 2,113
Завершенные тесты: 2
21.10.2016, 18:34 6
Цитата Сообщение от unclemike Посмотреть сообщение
Почему после компиляции при нажатии на любую клавишу в консоль печатается соответствующий символ, хотя
в теле цикла нет putchar().
Чтобы не выводить надо вместо getchar использовать getch. По сути, 2 буквы убрать из программы.
Хотя в вашей задаче как раз-таки надо бы выводить.

Чёрт, уже 2 раза ответили(( Можете потереть))
0
unclemike
0 / 0 / 0
Регистрация: 12.10.2016
Сообщений: 5
22.10.2016, 07:49  [ТС] 7
Спасибо вам, уважаемые аксакалы! Вопрос исчерпан, от себя могу добавить, что книга Кернигана и Ритчи должна называться по друому нежели "ПРОГРАММИРОВАНИЕ ДЛЯ НАЧИНАЮЩИХ" или же её надо переиздать в очередной раз, так чтобы у людей, которые пытаются следовать "букве закона", не возникало разрывов шаблонов.

Мне кажется что проще всего обратиться к другому источнику,может быть подскажете какую нибудь книгу с русскоязычным автором(мне кажется что мышление по-русски, в хорошем смысле, сильно отличается от оного по английски)

Про библиотеку conio.h я понял, а вот про по "идее через SetConsoleMode() можно отключить(win)" это сильно сказано
0
LFC
730 / 535 / 416
Регистрация: 17.09.2015
Сообщений: 1,598
22.10.2016, 08:20 8
Цитата Сообщение от unclemike Посмотреть сообщение
подскажете какую нибудь книгу с русскоязычным автором
К.Поляков.Программирование на Си
1
22.10.2016, 08:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2016, 08:20

Подсчёт чисел с K разрядами, установленными в "0". Объяснить условие
Определить количество чисел, состоящих из n десятичных разрядов ( n - натуральное число, &lt;=10), у...

Ввести структуру "историческое событие" с полями "число", "месяц", "год", "событие"
Ввести структуру ИСТОРИЧЕСКОЕ СОБЫТИЕ с полями ЧИСЛО, МЕСЯЦ, ГОД, СОБЫТИЕ. Составить и...

Подсчитать общее количество вхождений в строку символов "А", "a", "B" и "b"
#include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;conio.h&gt; main() { int i; int k; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru