Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
usernet009
24 / 24 / 1
Регистрация: 28.12.2009
Сообщений: 85
#1

Проверка : нажал ли пользователь клавишу - C++

14.07.2010, 00:33. Просмотров 1806. Ответов 3
Метки нет (Все метки)

Извиняюсь за тупой вопрос. Нужна функция которая проверяет, нажал ли пользователь какую то клавишу или нет. Знаю только наподобие getch() cin.get() cin.peek() но это не то.. если пользователь ничего не нажимал то функции ЖДУТ нажатия, а мне нужно чтоб цикл продолжался без остановок.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2010, 00:33     Проверка : нажал ли пользователь клавишу
Посмотрите здесь:
Проверка, ввел ли пользователь что-нибудь на клавиатуре? C++
посчитать количество буковок(5,10,20) которых я нажал и записать в файл суму нажатий.. C++
C++ Условие на клавишу
как сделать что бы когда нажал выбор кокого нить пункта, а он выделялся и с помощью Enter я подтверждаю что выбираю C++
Конвертировать клавишу в VK_KEY C++
C++ Подменить нажатую клавишу
Добавить горячую клавишу C++
Как назначить клавишу на действие C++
Открытие файла по нажатию на клавишу C++
Добавление какого либо действия на клавишу C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
14.07.2010, 01:49     Проверка : нажал ли пользователь клавишу #2
есть select() на лине, пример там в man'е про stdin
usernet009
24 / 24 / 1
Регистрация: 28.12.2009
Сообщений: 85
14.07.2010, 01:53  [ТС]     Проверка : нажал ли пользователь клавишу #3
Оо... спасибо, буквально минуту назад нашел подходящую.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
KBHIT
            
               #include <conio.h>     /* требуется только для объявления функции */
               int kbhit();
               
               /* Описание.
            
               Функция kbhit проверяет нажатие клавиши на консоли.
            
               Возвращаемое значение.
            
         
               Функция  kbhit  возвращает ненулевое значение, если клавиша
         нажата. В противном случае возвращается 0.
            
               Пример: */
           
               #include <conio.h>
               int result;
               /* следующий оператор проверяет, была ли нажата клавиша */
            result = kbhit();
               /* если результат result ненулевой, буфер  ожидает  нажатие
         клавиши.  Ее можно задать при помощи getch или getche. Если getch
         или getche были вызваны функцией kbhit  без  проверки,  программа
         делает паузу и ожидает ввод символа. */
easybudda
Эксперт С++
9459 / 5472 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
14.07.2010, 02:34     Проверка : нажал ли пользователь клавишу #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
usernet009, немного не по теме, но для разнообразия: програмка для *NIX ждёт пользовательского ввода 10 секунд, если ввода небыло, выдаёт сообщение и ждёт ещё 10 секунд. Если ввод был, выводит его и снова ждёт, если только quit не ввести... Ввод заканчивается клавишей enter, если это не желательно, прийдётся пошаманить немного - был уже похожий пример на форуме...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
 
#define TIMEOUT 10
 
int main(void){
    char buf[BUFSIZ], * p;
    struct timeval tv;
    fd_set readfds;
    int ret, len;
 
    while ( 1 ){
        FD_ZERO(&readfds);
        FD_SET(STDIN_FILENO, &readfds);
        tv.tv_sec = TIMEOUT;
        tv.tv_usec = 0;
 
        ret = select(STDIN_FILENO + 1, &readfds, NULL, NULL, &tv);
 
        if ( ret == -1 ){
            perror("select");
            exit(EXIT_FAILURE);
        }
        else if ( ! ret ){
            printf("No user input after %d seconds\n", TIMEOUT);
            continue;
        }
 
        if ( FD_ISSET(STDIN_FILENO, &readfds) ){
            len = read(STDIN_FILENO, buf, BUFSIZ - 1);
            if ( len == -1 ){
                perror("read");
                exit(EXIT_FAILURE);
            }
            buf[len] = '\0';
            if ( p = strrchr(buf, '\n') )
                *p = '\0';
            printf("User input: %s\n", buf);
            if ( ! strcmp(buf, "quit") )
                break;
        }
    }
 
    exit(EXIT_SUCCESS);
}
Проверка : нажал ли пользователь клавишу
Yandex
Объявления
14.07.2010, 02:34     Проверка : нажал ли пользователь клавишу
Ответ Создать тему
Опции темы

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