Я просто написал эту небольшую программу, которая должна дождаться, когда пользователь наберет что-то перед печатью каждой строки, но работает только для первого _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() работает только один раз в программе.
Хотя он не говорит об этом явно на этой странице документации, вам нужно использовать getch
клавиш (с помощью getch
или getche
), иначе _kbhit
все равно ее увидит. Вызовите _getch
после цикла while перед следующим:
while(_kbhit() == 0);
_getch();
// _kbhit can now be called again