2

printf ステートメントで生成された C プログラムの出力をクリアしたいと考えています。たとえば、1行だけをクリアしたい:

[ソース]

printf("AAAAAAAAAAAAAA\n");
printf("BBBBBBBBBBBBBB\n");
printf("CCCCCCCCCCCCCC\n");
printf("DDDDDDDDDDDDDD\n");

[ターミナル]

AAAAAAAAAAAAAA
BBBBBBBBBBBBBB
CCCCCCCCCCCCCC
DDDDDDDDDDDDDD

[私は願います]

AAAAAAAAAAAAAA
BBBBBBBBBBBBBB
CCCCCCCCCCCCCC

「DDDDDDDDDDDDDD」行に他の文字列を書き込みます。上記のA、B、Cの文章を残したいだけです。D文のみをクリアして他の文を変更し、無条件でD文を出力します。

どうすればいいですか?

4

3 に答える 3

14

DDDDDDDDDDDDDD を削除するにはいくつかの方法があります

  1. バックスペースを数回印刷する
printf("\b");
  1. キャリッジリターンを印刷してから、元の行を上書きする何かを印刷します
printf("\r");
  1. あなたが改行している場合。端末コマンドを使用してカーソルを移動できます

そのようなprintf("\033[8;5Hhello"); // Move to (8, 5) and output hello

その他のコマンド:

printf("\033[XA"); // Move up X lines;
printf("\033[XB"); // Move down X lines;
printf("\033[XC"); // Move right X column;
printf("\033[XD"); // Move left X column;
printf("\033[2J"); // Clear screen
...
  1. ncursesを忘れるな

端末で正確なレイアウトとフォーマットを制御する最良の方法です

于 2013-06-09T04:35:07.157 に答える
1

ここで最も期待されることについて答えてみました。

printf("AAAAAAAAAAAAAA");
printf("BBBBBBBBBBBBBB");
printf("CCCCCCCCCCCCCC");
//printf("DDDDDDDDDDDDDD");

端末に表示したくない場合は、最後の行にコメントを付けるか、削除してください。printf("xxxx") は、ターミナルで出力を印刷するために使用されるステートメントです。

于 2013-06-09T04:00:42.273 に答える