Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
7 / 7 / 3
Регистрация: 19.02.2013
Сообщений: 77
1

Как выйти из цикла при нажатии клавиши ESC

08.04.2013, 22:56. Показов 2673. Ответов 7
Метки нет (Все метки)

Доброго времени дня. Поясните, как выйти из цикла при нажатии клавиши ESC

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void GetStr()
{
    char *array_str[MAXSTR];
    char str[MAXBUF];
    int i;
 
    for( i = NULL; i < 7 ; i++ ) {
        if( kbhit() == 0x011B )
            break;
        gets( str );
        array_str[i] = str;
        puts( array_str[0] );
    }
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2013, 22:56
Ответы с готовыми решениями:

Выход из цикла при нажатии ESC
Определить, содержит ли текст символы,отличные от букв и пробелов. Вот мой код: #include&lt;iostream&gt;...

Оформить и обработать в виде события выход из программы при нажатии клавиши Esc
Ребят, помогите пожалуйста &quot;оформить и обработать в виде события выход из программы при нажатии...

Выйти из цикла при нажатии на кнопку
Добрый вечер! Программа виснет при нажатии Button1. Судя по всему не выходит из цикла. Помогите...

Как сделать выход из цикла при нажатии любой клавиши?
У меня Python 3.2.5 как сделать выход из цикла по нажатию любой клавиши!! зарание спасибо!

7
44 / 42 / 31
Регистрация: 15.03.2013
Сообщений: 91
09.04.2013, 05:12 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

первое, код ESC -27 или 0x1b
второе, ф-ия kbhit() просто проверяет наличие в буфере ввода кода нажатой клавиши и возвращает 0 или 0xffff.
по вашему алгоритму лучше признаком выхода из цикла сделать ввод пустой строки
C
1
2
gets( str );
if(str[0]==0) break;
если очень хотите с ESC, то строки с 9 по 11 так можно сделать
C
1
2
3
4
while((c=kbhit())==0);
c=getch();
if(c==0x1b) break;
putchar(c); str[0]=c; gets(str+1);
1
7 / 7 / 3
Регистрация: 19.02.2013
Сообщений: 77
10.04.2013, 21:16  [ТС] 3
Большое спасибо, прояснилось. Только есть несколько вопросов:

Первые две строчки в этом коде

C
1
2
while((c=kbhit())==0);
c=getch();
Первая ясна, у нас пустой цикл, ждем нажатие клавиши. Код которой, присваиваем переменной с

А вот зачем нужна тогда вторая строчка с вызовом функции getch() ?
И тут же подвопрос, возможно глупый, а код символа и код клавиши - это одно и тоже?
0
44 / 42 / 31
Регистрация: 15.03.2013
Сообщений: 91
11.04.2013, 02:15 4
сорри, я ввел в заблуждение: функция kbhit() не возвращает кода клавиши(символа), она возвращает 0 или 0xffff
и после ее проверки код символа остается в буфере клавиатуры, а уже функция getch() забирает его оттуда.
т.е. правильнее будет
C
1
2
while(kbhit()==0);
c=getch();
в данных примерах коды символа и клавиши одно и тоже. строго говоря - код символа нажатой клавиши.
1
7 / 7 / 3
Регистрация: 19.02.2013
Сообщений: 77
11.04.2013, 03:03  [ТС] 5
А вывести код клавиши, соответственно:

C
1
printf("%d",c );
Так?
0
44 / 42 / 31
Регистрация: 15.03.2013
Сообщений: 91
11.04.2013, 03:10 6
да так
0
7 / 7 / 3
Регистрация: 19.02.2013
Сообщений: 77
11.04.2013, 03:20  [ТС] 7
C
1
printf( "%#X\n\n",c );
Коды верхних цифровых клавиш совпадают с табличными, остальные - нет.
0
44 / 42 / 31
Регистрация: 15.03.2013
Сообщений: 91
11.04.2013, 07:17 8
таблица ASCII ?
вот программка для изучения кодов символов.
печатает символьное представление, шестнадцатеричное и десятичное.
C
1
2
3
4
5
6
7
8
9
10
void main(void)
{
int c;
do{
while((kbhit())==0);
c=getch();
if(c==0x1b) break;// выход по ESC
else {  printf("%c : %#X : %d\n",c,c,c);}
}while(1);
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2013, 07:17

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Старый борланд: как выйти из бесконечного цикла по нажатию заданной клавиши?
Короче нужно сделать прогу которая считает сколько отрицательных,положительных,равных 0 ввел...

Скрытие формы при нажатии клавиши "Esc"
Господа, Когда открыта своя собственная форма, что мне необходимо сделать, чтобы она закрывалась...

Завершение цикла при нажатии клавиши
Проигрывается звуковой файл зацикленно, пока не нажата любая клавиша. var q:string; const ...

Выход из цикла при нажатии определенной клавиши
Подскажите, пожалуйста, как написать цикл с выходом из него при нажатии определенной клавиши ......


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

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

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