可能重复:
C/C++:从标准输入中捕获字符,而无需等待按下回车键
如何在C中的Linux上进行非阻塞控制台I/O?
我正在尝试用C语言编写一个程序,该程序处于恒定循环中,但我需要能够在每个循环开始时从键盘接收输入,或者在没有按键的情况下继续。
getchar((和_getch((是不够的,因为它们都在等待输入。如果有人知道一个类似_getch但不等待输入的函数,我们将不胜感激。
没有C标准的方法来做你想做的事情(在用户不点击回车键的情况下从键盘上捕捉击键(,你必须特定于平台。<conio.h>
应该有你在Windows上需要的东西,你需要curses
在Linux上才能得到。(我怀疑curses
也适用于Mac,但不要引用我的话(
在Windows上,kbhit()
不等待任何输入,它只在您进行测试的那一刻按下一个键时返回。如果你也需要知道密钥是什么,那么你可以将其与getch()
结合起来
类似于:
while(countdown++ <= 1000){ // give a second to hit something
if(b=kbhit()) // if the user presses a key
break; // leave the loop early
Sleep(1); // else, sleep for 1 ms and try again
}
if (b != 0) // if something was pressed
printf("The key was %dn", getch());