2009-05-22 58 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,尤其是美國證券交易所,以及您所稱的實際獲利功能。