可能重复:
C/C++:从标准输入中捕获字符而不等待按下回车
如何在 C 中的 Linux 上进行非阻塞控制台 I/O?
我正在尝试用 C 语言编写一个处于恒定循环中的程序,但我需要能够在每个循环开始时从键盘接收输入,或者如果没有按下任何键则继续。
getchar() 和 _getch() 是不够的,因为它们都在等待输入。如果有人知道类似于 _getch 但不等待输入的函数,将不胜感激。
可能重复:
C/C++:从标准输入中捕获字符而不等待按下回车
如何在 C 中的 Linux 上进行非阻塞控制台 I/O?
我正在尝试用 C 语言编写一个处于恒定循环中的程序,但我需要能够在每个循环开始时从键盘接收输入,或者如果没有按下任何键则继续。
getchar() 和 _getch() 是不够的,因为它们都在等待输入。如果有人知道类似于 _getch 但不等待输入的函数,将不胜感激。
没有 C 标准的方法来做你想做的事情(在没有用户按下回车的情况下从键盘捕获击键),你必须去特定平台。<conio.h>
应该有你在 Windows 上需要的东西,你需要curses
在 Linux 上得到这个。(我怀疑curses
也可以在 Mac 上工作,但不要引用我的话)
在 Windowskbhit()
上,不等待任何输入,如果在您进行测试的那一刻有按键按下,它只会返回。如果您还需要知道密钥是什么,那么您可以将其与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 %d\n", getch());