C库函数从键盘检查按键(在linux中)
是否有任何C库函数来检查键盘上的按键(我在linux机器上工作)。
来自头文件stdio.h
getchar()
返回stdin中的下一个字符。 那可能就是你要找的东西。
以下代码将从stdin流输出第一个char:
#include int main (int argc, char **argv){ char c = getchar(); printf("Char: %c", c); return 0; }
还有其他function可以在不阻塞的情况下执行此操作,即kbhit()
和getch()。 但是头文件conio.h
是非标准的,如果您使用的是Linux,则可能在您的平台上不可用。
所以你有两个选择:
1.)使用库ncurses你可以使用函数timeout()来定义getch()
函数的超时,如下所示:
initscr(); timeout(1000); char c = getch(); endwin(); printf("Char: %c\n", c);
2.)自己实现kbhit()
而不使用ncurses。 这里有一个很大的扩展。 您必须自己测量时间并循环直到达到超时。 要在C中测量时间,stackoverflow上有很multithreading – 你只需要搜索它。 然后你的代码看起来像这样:
while(pastTime() < YOUR_TIMING_CONSTRAINT){ if (kbhit()){ char c = fgetc(stdin); printf("Char: %c\n", c); } }
您可以使用getchar()
或getc(stdin)
,它们是C中的标准函数。它们将字符回显到已按下的终端。
甚至是getch()
。优点是,它不会回显按下终端的字符。 注意getch()
不是标准C的一部分。您可以为getch()
编写自己的函数或使用curses.h