我需要检测按键,而无需用户按Enter键。 什么是最优雅的方式?
即如果用户按下字母Q而没有按回车键 ,程序会执行某些操作。
在unix / posix中,执行此操作的标准方法是使用tcsetattr将输入置于非规范模式:
#include #include : struct termios attr; tcgetattr(0, &attr); attr.c_lflag &= ~ICANON; tcsetattr(0, TCSANOW, &attr);
有关更多详细信息,请参见termios(3)手册页(可能还有比您想知道的更多信息)。
据我所知,除了使用像ncurses
这样提供getch(void)
函数的库之外,没有好办法可以这么做。
注意:从stdio.h
出现getchar(void)
等待直到按下回车键然后输入你的字符,所以它不起作用。
在Windows中,
提供了函数_getch(void)
,可用于读取键击而不回显它们(如果需要,可以自己打印)。
#include #include int main( void ) { int ch; puts( "Type '@' to exit : " ); do { ch = _getch(); _putch( ch ); } while( ch != '@' ); _putch( 'r' ); // Carriage return _putch( 'n' ); // Line feed }
以上就是c/c++开发分享检测击键相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/562254.html