私はシステムクラスプロジェクトのために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. stdout/stdinとパラメータ
- 3. LinuxデーモンとSTDIN/STDOUT
- 4. stdinとstdoutをJavaでリダイレクトする
- 5. stdinとstdoutをnetcatにリダイレクトする
- 6. stdinとstdoutのリダイレクトstdinが最初に終了する場所
- 7. Go Stdin Stdout通信
- 8. Ruby stdin/stdout on HackerRank
- 9. stdin stdout用のロガー
- 10. stdin _and_ stdoutをパイプにリダイレクト
- 11. Node.JS:tcpをstdin/stdoutに変換する
- 12. サブプロセスのstdinとstdoutとしてファイルを使用する
- 13. Unity3DでのC#system.process stdin/stdout処理
- 14. C++ Linux他のプログラムとやりとりするstdin/stdout
- 15. bashのstdinとstdoutの両方を別のファイルにリダイレクトする
- 16. stdinとstdoutを同時に実行する
- 17. stdin/stdoutとファイルを抽象化する方法は?
- 18. stdinとstdoutを使って同じcプログラムにパイプする
- 19. Paramikoのstdoutをサブプロセスのstdinとして使用する
- 20. /dev/ttyとstdin/stdout/stderrの関係は何ですか?
- 21. stdoutとstdinファイル記述子を閉じた後で再オープン
- 22. GDB/MIはstdinとstdoutをファイルにリダイレクトします
- 23. stdin/stdoutとQDataStreamを使ったQProcessとの通信
- 24. ImageMagickのSTDIN/STDOUTの適切な構文
- 25. WinSock接続へのStdIn/StdOut/StdErrリダイレクト
- 26. pipe子プロセスnode.jsのブラウザーにstdout&stdin&browserify
- 27. Bash + Node.js + stdin/stdoutリダイレクト:エラー "not a tty"
- 28. プロセスは複数のstdoutとstdinを持つことができますか?
- 29. freopen()を使用して、マルチスレッドアプリケーションのスレッドバイスログファイルでstdoutとstdinをリダイレクトできますか?
- 30. stdinとstdoutを介したC#双方向IPC