2009-05-22 55 views
2

我正在使用read()系统调用从标准输入读取数据,但有一件事情让我困扰。我不能使用箭头键......我真正想做的是使用箭头键在输入的文本中来回移动,但我认为这并不容易......所以,我至少要做的是,就是无视他们。如何忽略C中从标准输入读取的箭头键?

现在,按任意箭头键会产生奇怪的输出,我想阻止任何东西写入标准输出(因此从read()系统调用中的标准输入读取)。

这很容易实现或者不是那么容易吗?

回答

4

为了按照理想的方式解释箭头键(即来回移动和编辑输入),通常需要使用库。对于Linux,标准是GNU Readline。希望别人能说出你通常用于Windows CLI应用程序的东西。

+0

这可能是我需要的唯一答案大声笑... – 2009-05-22 15:49:37

0

答案最终取决于钥匙从哪里来。我在Cygwin下运行这个程序:

int main(void) 
{ 
    int c=0; 

    while(c != 'X') { 
     c = getchar(); 
     printf("\nc=%d", c); 
    } 
} 

每次光标键走来,我看到逃生(27),支架,加上另一个字符。所以,如果你得到这样的结果,每次看到一个27就可以跳过3个键。你也可以看着它们并利用它们!如上所述,YMMV,尤其是美国证券交易所,以及您所称的实际获利功能。