Как определить определенное время для функции getch () в C? - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь заставить функцию getch () языка C в Windows работать только в течение нескольких секунд.

#include <stdio.h>
#include <windows.h>
int main()
{
    int v1, v2;
    v1=getch();//I want this getch to only be activated for a few seconds
    printf("Example");//That to activate the next function, even if the person reading this programm doesn't click in any key
    return 0;
}

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Вы можете использовать kbhit(), который проверяет, была ли нажата клавиша, перед фиксацией функции блокировки getch(). L oop ниже использует clock() для проверки тайм-аута.

#include <conio.h>
#include <stdio.h>
#include <ctype.h>
#include <time.h>

#define TIMEOUT 5   // seconds

int main(void)
{
    clock_t tstart = clock();
    int v1 = 'y';                   // default key press
    while((clock() - tstart) / CLOCKS_PER_SEC < TIMEOUT) {
        if(kbhit()) {
            v1 = getch();
            break;
        }
    }
    if(tolower(v1) == 'y')
        printf("Example\n");
    return 0;
}

Это особенно полезно в игре, где вы не хотите сидеть и ждать нажатия клавиши, а затем нет. не так прост в использовании. Когда вы нажимаете функциональную клавишу или клавишу курсора getch(), возвращает два последовательных символа, первым является значение «escape», которое необходимо проверить.

0 голосов
/ 17 февраля 2020

вам нужно использовать библиотеку ncurse и вызвать:

  • initscr или newterm для инициализации экрана
  • тайм-аут с положительной задержкой. В противном случае он не будет блокироваться.

Подробнее здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...