我正在使用read()系统调用从标准输入中读取数据,但是有一件小事困扰着我。我不能用箭头键..。我真正想做的是使用箭头键在键入的文本中来回切换,但我认为这并不容易……所以,我至少想做的就是忽略它们。
现在,按任何一个箭头键都会产生奇怪的输出,我希望防止将任何内容写入标准输出(因此从我的read()系统调用中的标准输入中读取)。
这是容易实现的,还是不容易实现的?
发布于 2009-05-22 15:30:36
为了以理想的方式解释箭头键(即来回移动和编辑输入),通常需要使用库。对于Linux,标准是GNU Readline。希望其他人能说出你通常会在Windows CLI应用程序中使用什么。
发布于 2009-05-22 23:19:01
答案最终取决于密钥从何而来。我在Cygwin下运行了这个程序:
int main(void)
{
int c=0;
while( c != 'X' ) {
c = getchar();
printf("\nc=%d", c);
}
}每次出现光标键时,我都会看到换行符(27)、一个括号和另一个字符。所以,如果你得到这样的结果,你可以跳过3个关键点,每次你看到一个27。您还可以查看它们并使用它们!
如前所述,YMMV,特别是对于操作系统,以及您调用的实际密钥获取函数。
https://stackoverflow.com/questions/898443
复制相似问题