从键盘读取输入而不按回车[重复]
Posted
技术标签:
【中文标题】从键盘读取输入而不按回车[重复]【英文标题】:reading input from the keyboard without pressing enter [duplicate] 【发布时间】:2012-12-23 01:28:42 【问题描述】:可能重复:C/C++: Capture characters from standard input without waiting for enter to be pressedHow do you do non-blocking console I/O on Linux in C?
我正在尝试用 C 语言编写一个处于恒定循环中的程序,但我需要能够在每个循环开始时接收来自键盘的输入,或者如果没有按下任何键则继续。
getchar() 和 _getch() 是不够的,因为它们都在等待输入。如果有人知道类似于 _getch 但不等待输入的函数,将不胜感激。
【问题讨论】:
您的代码将在哪个系统上运行? 发布您尝试过的代码.. C 不假定您的键盘设备具有此功能。如果您知道自己的事实,则必须使用某些特定于平台的功能来共享此知识。 【参考方案1】:没有 C 标准的方式来做你想做的事(从键盘捕获击键而无需用户按 Enter),你必须特定于平台。 <conio.h>
在 Windows 上应该有你需要的东西,在 Linux 上你需要curses
来获得它。 (我怀疑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 %d\n", getch());
【讨论】:
以上是关于从键盘读取输入而不按回车[重复]的主要内容,如果未能解决你的问题,请参考以下文章