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)