矢印キーの押下に応答するコードの簡単な小さなスニペットを作成しようとしています。up が ^[[A で表されることはわかっており、そのシーケンスをチェックする次のコードがあります。
while( 1 )
{
input_char = fgetc( stdin );
if( input_char == EOF || input_char == '\n' )
{
break;
}
/* Escape sequence */
if( input_char == 27 )
{
input_char = getc( stdin );
if( input_char == '[' )
{
switch( getc( stdin ) )
{
case 'A':
printf("Move up\n");
break;
}
}
}
}
「上へ」を押すたびに、エスケープ シーケンス (^[[A) が画面に表示されますが、Enter キーを押すまで「上へ移動」は表示されません。
最終的な目標は、現在の行のテキストを他のデータに置き換えることです。
printf("\r%s", "New Text");
「上に移動」の代わりに、Enter キーを押すまで表示されません。
文字の読み方がおかしいのでしょうか?
ありがとう!
EDITクイックノート、* nixシステム用です。
解決策 皆さん、ご指摘ありがとうございます。私は stepanbujnak のソリューションを採用しました。私が気づいたことの 1 つは、文字列を変更するキー (バックスペースなど) の多くの動作が、予想とは異なることです。それはライン上の何でも(printf'dのものを含む)バックスペースします、そして私はそれを説明しなければなりませんでした。その後、残りを一列に並べるのはそれほど悪くはありませんでした:)