2

read() システム コールを使用して標準入力から読み込んでいますが、ちょっと気になる点があります。矢印キーを使用できません...私が本当にやりたかったのは、矢印キーを使用して入力したテキスト内を前後に移動することでしたが、それはそれほど簡単ではないと思います...だから、少なくともやりたいこと、それらを無視することです。

現在、矢印キーのいずれかを押すと奇妙な出力が生成され、標準出力に何も書き込まれないようにしたい (その結果、read() システム コールで標準入力から読み取られる)。

これは簡単に達成できますか、それともそれほど簡単ではありませんか?

4

2 に答える 2

4

矢印キーを理想的な方法で解釈する (つまり、前後に移動して入力を編集する) には、通常、ライブラリを使用する必要があります。Linux の場合、標準はGNU Readlineです。Windows CLI アプリで通常使用するものを他の誰かが言ってくれることを願っています。

于 2009-05-22T15:30:35.603 に答える
0

答えは、最終的にキーがどこから来るかによって異なります。このプログラムを Cygwin で実行しました。

int main(void)
{
    int c=0;

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

カーソルキーが現れるたびに、エスケープ (27)、ブラケット、および別の文字が表示されます。したがって、そのような結果が得られた場合は、27 が表示されるたびに 3 つのキーをスキップできます。それらを見て、それらを利用することもできます!

前述のように、特に OS 用の YMMV と、呼び出す実際のキー取得関数。

于 2009-05-22T23:19:01.467 に答える