[解決済み] Ubuntuで矢印キーを押すとターミナルに「^[[A""^[[B""^[[C""^[[D]」と表示されるのはなぜですか?
2022-02-16 11:40:58
質問内容
最初にWindowsでAnsi Cで小さなプログラムを書いて、今Ubuntuで内蔵のGCCでコンパイルしました。
プログラムは単純です。
-
でコンソールから行を読み取る。
scanf()
. - 文字列を解析して計算する。
しかし、変なことが起こります。カーソルを動かそうとすると、4文字がプリントされるのです。
-
押す
上へ
は"を表示します。
^[[A
" -
プレス
Dn
は"を表示します。
^[[B
" -
プレス
Rt
は " を表示します。
^[[C
" -
プレス
Lt
は"を表示します。
^[[D
"
-
どうすれば回避できるのでしょうか?
-
なぜカーソルを移動させる代わりに、この4文字を表示するのですか?
解決方法は?
なぜなら、キーボードが実際にPCに送るもの(より正確には、キーボードから実際に受け取ったものに対して端末が印字するもの)だからです。
bash
そのため、カーソルを移動させるか(left/right の場合)、履歴を使用して以前のコマンドを取得します(up/down の場合)。ですから、あなたのプログラムが魔法のように矢印キーをサポートすることを期待することはできません。
しかし ターミナルからの標準入力の読み込みは、すでに左/右矢印キーをサポートしています(と信じていますが、私は今、テストして確認するためにLinuxにいないのです)。ですから、私の推測では、別の問題が干渉しているのだと思います。1つの原因として、修飾キーの1つが動かなくなっている可能性があります。ALT、CTRL、SUPERなどでしょうか?
関連
-
[解決済み】Valgrind が "Invalid write of size 8" で文句を言う。
-
[解決済み】「無効なイニシャライザー」と表示されるのですが、何が間違っているのでしょうか?
-
[解決済み】警告:引数「互換性のないポインタ型から」を渡す[デフォルトで有効]。
-
[解決済み】malloc():メモリ破壊
-
[解決済み】.axfファイルとは何ですか?
-
[解決済み] Cプリプロセッサはなぜ "linux "という単語を定数 "1 "と解釈するのですか?
-
[解決済み] printfは、フォーマット文字列の中に改行がないと、呼び出し後にフラッシュしないのはなぜですか?
-
[解決済み] 2次元配列の反復処理において、ループの順序がパフォーマンスに影響するのはなぜですか?
-
[解決済み】C言語の矢印(->)演算子はなぜ存在するのですか?
-
[解決済み] 古いCコンパイラを使うのはセキュリティリスクか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Connect: ソケット以外でのソケット操作
-
[解決済み】コンパイラの警告 - 真理値として使用される代入の周囲に括弧を付けることを推奨する
-
[解決済み】LinuxのI_PUSHに相当するもの
-
[解決済み] char pointers: 'char*' から 'char' への無効な変換?
-
[解決済み] [Solved] .Cファイルをコンパイルしています。アーキテクチャ x86_64 の未定義シンボル
-
[解決済み】インクリメントオペランドとして lvalue が必要です。
-
[解決済み】C言語のフォーマット文字列でデータ引数が使用されない [重複]。
-
[解決済み] '{'トークンの前に期待される式
-
[解決済み】execvp: バッドアドレスエラー
-
[解決済み】C言語でpow( )への未定義参照、math.hを含むにもかかわらず【重複】。