私はシステムクラスプロジェクトのためにCでCLIプログラムを開発しており、コマンドプロンプトを維持しながら受信テキストを表示する必要があります。放置されたテキストは、入力しようとしているものを見ています。他のアプリケーションでは、プロンプト自体の上に(またはその下に)入力テキストの印刷が見られました。 ANSIエスケープでこれを実装する方法はありますか? ncursesは過度のようだ。ターミナル内でstdinとstdoutを分離する
3
A
答えて
2
\r
を印刷すると、プロンプトを消去できます。現在の行の先頭にカーソルが戻ります。次に、残りの入力文字、改行を取り除き、プロンプトを再印刷するために、出力の後ろにスペースをいくつか続けて印刷することができます。
ANSIシーケンスまたは端末固有のライブラリを使用するとさらに多くのことができますが、これはASCIIだけを使って確実に行うことができると思います。もちろん、画面全体を再描画するための空白行を242行印刷します。
編集:申し訳ありませんが、私はANSIの部分に正しく答えませんでした。カーソル移動制御コードと既存の文字の上に印刷スペースを置くことで、何かを行うことができます。また、「行を削除する」のような便利な操作がいくつかあります。しかし、WindowsはANSIのポストXPでうまく動かないし、他のシステムでも保証されていないことに注意してください。
0
印刷中にプロンプトを維持したい場合、scanfのようなものは使用できません。キーボードイベントを傍受するか、入力を得るために待機しない方法を使用する必要があります。次に、行数(n)を取得し、出力の最後のn-1行を出力してからプロンプトを表示することができます。
my2c
関連する問題
- 1. ログプロセス 'STDINとSTDOUT
- 2. LinuxデーモンとSTDIN/STDOUT
- 3. stdinとstdoutをJavaでリダイレクトする
- 4. stdinとstdoutをnetcatにリダイレクトする
- 5. stdinとstdoutのリダイレクトstdinが最初に終了する場所
- 6. stdin stdout用のロガー
- 7. stdin _and_ stdoutをパイプにリダイレクト
- 8. Node.JS:tcpをstdin/stdoutに変換する
- 9. サブプロセスのstdinとstdoutとしてファイルを使用する
- 10. stdoutとstdinファイル記述子を閉じた後で再オープン
- 11. pipe子プロセスnode.jsのブラウザーにstdout&stdin&browserify
- 12. stdinとstdoutを介したC#双方向IPC
- 13. freopen()を使用して、マルチスレッドアプリケーションのスレッドバイスログファイルでstdoutとstdinをリダイレクトできますか?
- 14. コンポジット内のドメインとuiレイヤの分離
- 15. STDIN、STDOUT、STDERRをCの/ dev/nullにリダイレクトする
- 16. Delphiのコンソールアプリケーションでstdin/stdoutでTStreamを開く
- 17. 名前付きパイプ(STDIN/STDOUTではなく)でIRBを制御
- 18. AsyncTaskとUIスレッドの分離/分離
- 19. あるプロセスオブジェクトのstdoutを別のプロセスオブジェクトのstdinにリダイレクト
- 20. 画像内の人物と背景を分離する方法
- 21. リストビュー内のTextViewとImageButton上のリスナーを分離する
- 22. stdinとstdoutはプロセスとどのようにユニークになっていますか?
- 23. Windowsターミナル(cmd.exe)の "type"コマンドにstdinをリダイレクトする方法はありますか?
- 24. STDIN/STDOUTによるPythonによる外部プロセスの開始と制御
- 25. プロセス内でCライブラリを分離して多重化する
- 26. ディレクティブコントローラ内でスコープ変数を分離する方法は?
- 27. stdin/stdoutをsshに置き換えて開く
- 28. execdedプロセスからstdin/stdoutをPerlのパイプにリダイレクト
- 29. TransactionScopeと分離レベル
- 30. PHPとPythonでhtml2textを使用してマークダウン形式のテキストを取得するSTDINとSTDOUTの方法