2

我想清除使用 printf 语句生成的 C 程序的输出。我只想清除一行,例如:

[资源]

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 回答
2

如果您使用的是 X-Term 兼容设备(包括 Gnome 终端),请打印以下内容

printf("\033[2J");

或者

cout << "\033[2J";

其中\033ASCII中的转义字符,[2J是特定的操作(清除)。

于 2013-06-09T04:28:58.507 回答
1

我试着回答这里最好的预期。

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

如果您不想在终端中显示,请评论最后一行或删除。printf("xxxx") 是用于在终端打印输出的语句。

于 2013-06-09T04:00:42.273 回答