Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2013, 13:35   #1
truniger2011
Пользователь
 
Регистрация: 15.11.2012
Сообщений: 34
По умолчанию Прерывание цикла нажатием кнопки

Вопрос такой, есть бесконечный цикл
Код:
while(){

}
Он должен выполнятся безостановочно и прерываться по нажатию кнопки enter. Как это реализовать?
truniger2011 вне форума Ответить с цитированием
Старый 14.02.2013, 13:55   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

а) Проверять в цикле, не нажата ли [Enter].
б) В отдельном потоке обработки событий интерфейса, по нажатию [Enter] устанавливать некоторый флаг; в цикле проверять этот флаг.
в) В отдельном потоке обработки событий интерфейса, по нажатию [Enter] гробить поток, выполняющий цикл.
Abstraction вне форума Ответить с цитированием
Старый 14.02.2013, 14:02   #3
truniger2011
Пользователь
 
Регистрация: 15.11.2012
Сообщений: 34
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
а) Проверять в цикле, не нажата ли [Enter].
б) В отдельном потоке обработки событий интерфейса, по нажатию [Enter] устанавливать некоторый флаг; в цикле проверять этот флаг.
в) В отдельном потоке обработки событий интерфейса, по нажатию [Enter] гробить поток, выполняющий цикл.
А как проверять в цикле не нажата ли enter, если не сложно покажите пример пожайлуста
truniger2011 вне форума Ответить с цитированием
Старый 14.02.2013, 14:11   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Зависит от операционной системы, стандартного средства нет. В случае Windows, например:
Код:
if(GetKeyState(VK_RETURN) & (1<<(sizeof(SHORT)*8-1)) break;
Abstraction вне форума Ответить с цитированием
Старый 14.02.2013, 14:42   #5
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Есть в функция kbhit (conio.h)- по действию примерно как getch(), но она не ждет, а возвращает 0, если ничего не нажато.

Если нужно под линукс, то тут народ приводит пример реализации этой функции.
Так же на StackOverflow народ приводит точно такую же реализацию этой функции.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс

Последний раз редактировалось ROD; 14.02.2013 в 14:47.
ROD вне форума Ответить с цитированием
Старый 14.02.2013, 15:37   #6
_SOKOL_
Пользователь
 
Регистрация: 02.02.2013
Сообщений: 44
По умолчанию

Код:
while( !GetAsyncKeyState(VK_RETURN) )
{

}
пока не будет нажата ENTER, цыкл не прервётся
_SOKOL_ вне форума Ответить с цитированием
Старый 14.02.2013, 17:19   #7
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Не знаю что этот цикл будет делать, но CPU будет зашкаливать 100%
waleri вне форума Ответить с цитированием
Старый 14.02.2013, 17:38   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
покажите пример пожайлуста
http://programmersforum.ru/showthread.php?p=425723
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
прерывание цикла SarahConner Общие вопросы Delphi 5 22.10.2010 00:27
while прерывание цикла ололошенько Visual C++ 50 29.09.2010 09:02
Выход из цикла нажатием ESC Banderas123 Помощь студентам 2 05.12.2009 22:44
Проблема с нажатием кнопки мышки Zeraim Общие вопросы Delphi 2 23.05.2008 18:33
Переход на метку нажатием кнопки Макс84 Общие вопросы Delphi 6 04.04.2007 08:59