Я новичок в cpp в Mac. У меня возникла ошибка, когда я использовал kbhit () в своей программе. Я использовал #include, но тоже получил ошибку, поэтому я искал и тестировал с #include, но ошибка все еще осталась. так что, пожалуйста, помогите мне. заранее спасибо.
См. Мой ответ на связанный вопрос на stackoverflow.com/questions/448944/…





kbhit () нестандартен. На самом деле, я не верю, что существует стандартная функция для обнаружения ввода с клавиатуры. Лучшее, что вы можете сделать, это прочитать символ из стандартного ввода, например, fgetc, и надеюсь, что он не перенаправлен откуда-то еще.
Не знаю, сработает ли это на Mac, но вот код, который я использовал для получения однократного нажатия клавиши в Linux.
int mygetch() {
char ch;
int error;
static struct termios Otty, Ntty;
fflush(stdout);
tcgetattr(0, &Otty);
Ntty = Otty;
Ntty.c_iflag = 0; /* input mode */
Ntty.c_oflag = 0; /* output mode */
Ntty.c_lflag &= ~ICANON; /* line settings */
#if 1
/* disable echoing the char as it is typed */
Ntty.c_lflag &= ~ECHO; /* disable echo */
#else
/* enable echoing the char as it is typed */
Ntty.c_lflag |= ECHO; /* enable echo */
#endif
Ntty.c_cc[VMIN] = CMIN; /* minimum chars to wait for */
Ntty.c_cc[VTIME] = CTIME; /* minimum wait time */
#if 1
/*
* use this to flush the input buffer before blocking for new input
*/
#define FLAG TCSAFLUSH
#else
/*
* use this to return a char from the current input buffer, or block if
* no input is waiting.
*/
#define FLAG TCSANOW
#endif
if ((error = tcsetattr(0, FLAG, &Ntty)) == 0) {
error = read(0, &ch, 1 ); /* get char from stdin */
error += tcsetattr(0, FLAG, &Otty); /* restore old settings */
}
return (error == 1 ? (int) ch : -1 );
}
Пожалуйста, предоставьте пример вашего кода, который вызывает ошибку, и сообщение об ошибке.