Почему _kbhit () работает только один раз в программе на C?

0

Я просто написал эту небольшую программу, которая должна дождаться, когда пользователь наберет что-то перед печатью каждой строки, но работает только для первого _kbhit(), после чего он больше не ждет. Почему так?

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main(void)
{
    printf("Canada\n");
    while ( _kbhit() == 0 );

    printf("is\n");
    while ( _kbhit() == 0 );

    printf("great!");
    while ( _kbhit() == 0 );

    return 0;
}

В описании функции нет информации о том, что _kbhit() работает только один раз в программе.

Теги:

1 ответ

2
Лучший ответ

Хотя он не говорит об этом явно на этой странице документации, вам нужно использовать getch клавиш (с помощью getch или getche), иначе _kbhit все равно ее увидит. Вызовите _getch после цикла while перед следующим:

while(_kbhit() == 0);
_getch();
// _kbhit can now be called again

Ещё вопросы

Сообщество Overcoder
Наверх
Меню