C库函数从键盘检查按键(在linux中)

use*_*481 7 c

是否有任何C库函数来检查键盘上的按键(我在linux机器上工作).

Con*_*tin 7

getchar() 从头文件stdio.h返回来自标准输入的下一个字符。这可能就是你正在寻找的。

以下代码将从标准输入流中输出第一个字符:

#include <stdio.h>
int main (int argc, char **argv){
  char c = getchar();
  printf("Char: %c", c);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

还有其他函数可以在不阻塞 iekbhit()和 getch() in 的情况下执行此操作conio.h。但是头文件conio.h是非标准的,如果您使用的是 linux,则可能在您的平台上不可用。

所以你有两个选择:

1.) 使用库ncurses,您可以使用即函数timeout()为函数定义超时,getch()如下所示:

initscr();
timeout(1000);
char c = getch();
endwin();
printf("Char: %c\n", c);
Run Code Online (Sandbox Code Playgroud)

2.)kbhit()自己实现,不使用 ncurses。有一个伟大的expanation这里这样做。您必须自己测量时间并循环直到达到超时。为了用 C 测量时间,stackoverflow 上有很多线程——你只需要搜索它。然后你的代码看起来像这样:

while(pastTime() < YOUR_TIMING_CONSTRAINT){
  if (kbhit()){
    char c = fgetc(stdin);
    printf("Char: %c\n", c);
  }
}
Run Code Online (Sandbox Code Playgroud)