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

Подсчёт строк (горячие клавиши)

01.05.2016, 19:05. Просмотров 911. Ответов 8
Метки нет (Все метки)

Добрался в изучении языка программирования си до функций getchar и putchar.
Написав программу подсчёта строк столкнулся с проблемой: не могу заставить программу эти строки подсчитать.
Т.е. печатаю всё новые и новые строки, а конец программы так и не наступает с выдачей результатов подсчёта.
Подскажите пожалуйста, какая клавиша или комбинация клавиш отвечает за завершение работы программы?
C
1
2
3
4
5
6
7
8
9
 #include <stdio.h>
 
main () {
double nc;
for (nc=0; getchar() !=1; ++nc)
    ;
printf("%.0f\n", nc);
return;
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2016, 19:05
Ответы с готовыми решениями:

Подключение мыши с помощью прерываний 0х33 - горячие клавиши
Здравствуйте! Я пишу 16 разрядное приложение под ДОС на чистом С с ассемблерными вставками. Делаю...

Подсчёт строк работает некорректно
При следующих входных данных, получаются неверные результаты: 1) 123456 1123123123 ...

Подсчёт строк, столбцов, символов
Подскажите в чём ошибка. Пишет что ожидает имя типа через строку после while. #include &lt;stdio.h&gt;...

Программа "Подсчёт количества строк" (K&R)
Доброго времени суток! Простенькое упражнение из Кернигана и Ритчи &quot;подсчёт кол-ва строк&quot;......

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

8
andreyka93
128 / 128 / 157
Регистрация: 11.04.2015
Сообщений: 343
01.05.2016, 19:11 2
какую кнопку назначишь такая и будет отвечать, ты можешь например проверять ввод данных, если пользователь допустим ввел "quit" тогда завершать программу и выводить результат
0
Basitin
1 / 1 / 0
Регистрация: 17.07.2015
Сообщений: 27
01.05.2016, 20:09  [ТС] 3
Можно, пожалуйста, поподробнее?
Среда разработки Microsoft Visual Studio 2008 и CodeBlocks.
0
shepherd
25 / 25 / 26
Регистрация: 22.03.2016
Сообщений: 77
01.05.2016, 22:01 4
Лучший ответ Сообщение было отмечено Basitin как решение

Решение

Привет. У тебя в программе бесконечный цикл, который ждет пока getchar вернет значение равное единице. Значение равное единице он может вернуть при вводе символа по таблице ASCII под номером 1. Если ты хотел выйти из программы по вводу символа 1, нужно было в условии написать '1'.

Здесь я немного исправил исходную программу, теперь getchar ждет ввода символа 'q', при вводе q выходит из цикла.

P.S.
Незачем использовать в качестве счетчика цикла переменную типа double, для этого есть unsigned int.

C
1
2
3
4
5
6
7
8
9
 #include <stdio.h>
 
main () {
double nc;
for (nc=0; getchar() !='q'; ++nc)
    ;
printf("%.0f\n", nc);
return;
}
Добавлено через 3 минуты
p.p.s. Для завершения зацикленного кода можно использовать сочетание клавиш Ctrl+c
0
01.05.2016, 22:01
Basitin
1 / 1 / 0
Регистрация: 17.07.2015
Сообщений: 27
02.05.2016, 03:39  [ТС] 5
Спасибо за ответ.
Но, может я не так понял ваш совет.
При вводе информации, программа не реагирует ни на мою 1, которую я написал вместо EOF, который так же не работал, ни на q. Просто, продолжается ввод данных.
А комбинация Ctrl+c её закрывает, не выводя значение printf.
0
LFC
730 / 535 / 416
Регистрация: 17.09.2015
Сообщений: 1,598
02.05.2016, 04:18 6
Basitin, ну всё правильно вам написал shepherd, добавлю от себя что для счетчика не стоит использовать тип double, это int. и main тоже int.
C
1
2
3
4
5
6
7
8
9
#include <stdio.h>
 
int main ()
{
    int nc;
    for (nc = 0; getchar() != '1'; ++nc){}
    printf("%d\n", nc);
    return 0;
}
0
Basitin
1 / 1 / 0
Регистрация: 17.07.2015
Сообщений: 27
02.05.2016, 04:46  [ТС] 7
Спасибо за помощь. Разобрался.
Но хотелось уточнить: комбинация клавиш "Ctrl+c" закрывает программу, не выводя значение printf?
0
Alexandr_1982
180 / 81 / 30
Регистрация: 04.11.2013
Сообщений: 413
Записей в блоге: 4
02.05.2016, 07:01 8
У вас бесконечный цикл в программе.
0
LFC
730 / 535 / 416
Регистрация: 17.09.2015
Сообщений: 1,598
02.05.2016, 12:11 9
Цитата Сообщение от Basitin Посмотреть сообщение
Но хотелось уточнить: комбинация клавиш "Ctrl+c" закрывает программу, не выводя значение printf?
Ctrl+c просто прерывает выполнение программы, а printf у вас не вывелась потому что цикл for зациклился и никак не может завершиться,а printf выполнится только после завершения цикла for который не завершается из-за неверного условия наша песня хороша начинай сначала
0
02.05.2016, 12:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2016, 12:11

Как присваивать горячие клавиши к примеру на выполнение нажатие клавиши
Народ. не могу найти, как в студии присваивать горячие клавиши к примеру на выполнение нажатие...

Горячие клавиши - обойти наведение фокуса и привязать клавиши клавиатуры к кнопкам на форме
всем доброго времени суток. столкнулся с такой проблемой. требуется чтобы при нажатии определенных...

Горячие клавиши
Всем привет! Помогите решить задачку! При нажатии клавиш ctrl+F1 заблокировать клавишу f Как...


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

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

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