2011-01-27 4 views
3

私はシステムクラスプロジェクトのためにCでCLIプログラムを開発しており、コマンドプロンプトを維持しながら受信テキストを表示する必要があります。放置されたテキストは、入力しようとしているものを見ています。他のアプリケーションでは、プロンプト自体の上に(またはその下に)入力テキストの印刷が見られました。 ANSIエスケープでこれを実装する方法はありますか? ncursesは過度のようだ。ターミナル内でstdinとstdoutを分離する

答えて

2

\rを印刷すると、プロンプトを消去できます。現在の行の先頭にカーソルが戻ります。次に、残りの入力文字、改行を取り除き、プロンプトを再印刷するために、出力の後ろにスペースをいくつか続けて印刷することができます。

ANSIシーケンスまたは端末固有のライブラリを使用するとさらに多くのことができますが、これはASCIIだけを使って確実に行うことができると思います。もちろん、画面全体を再描画するための空白行を242行印刷します。

編集:申し訳ありませんが、私はANSIの部分に正しく答えませんでした。カーソル移動制御コードと既存の文字の上に印刷スペースを置くことで、何かを行うことができます。また、「行を削除する」のような便利な操作がいくつかあります。しかし、WindowsはANSIのポストXPでうまく動かないし、他のシステムでも保証されていないことに注意してください。

0

印刷中にプロンプ​​トを維持したい場合、scanfのようなものは使用できません。キーボードイベントを傍受するか、入力を得るために待機しない方法を使用する必要があります。次に、行数(n)を取得し、出力の最後のn-1行を出力してからプロンプトを表示することができます。

my2c

関連する問題