如何忽略用C箭头键从标准输入读?
-
23-08-2019 - |
题
我是从标准输入使用read()系统调用读,但有一个困扰我的一个小东西。我不能用箭头键......我真正想要做的是使用箭头键来回所键入的文本中,但我认为这不是那么容易......所以,我至少想办是忽略它们。
现在,按任意的箭头键的产生奇怪输出和欲防止任何东西被写入到标准输出(来自标准输入在我的读()系统调用从而读取)。
这是很容易可以达到或者它不是那么容易吗?
解决方案
为了解释箭头键,你将理想像到(即,来回移动和编辑输入)的方式,通常需要使用一个库。对于Linux,该标准是 GNU的Readline 。希望别人能说什么,你通常会使用一个Windows的命令行应用程序。
其他提示
答案最终取决于密钥来自哪里。我在Cygwin下运行此程序:
int main(void)
{
int c=0;
while( c != 'X' ) {
c = getchar();
printf("\nc=%d", c);
}
}
每次光标键出现时,我看到逃逸(27),支架,加上另一个字符。 所以,如果你得到这样的结果,您可以在每次你看到一个27你也可以看看他们,利用他们的时间跳过3个按键!
如前所述,情况因人而异,尤其是对O.S.,和你真正调用键取得功能。
不隶属于 StackOverflow