清除 Linux C 中终端程序的输出

标签 c linux unix terminal

我想清除使用 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句。

我该怎么做?

最佳答案

有几种方法可以删除DDDDDDDDDDDDDD

  1. 多次打印退格键
printf("\b");
  1. 打印回车符,然后打印一些东西来覆盖原来的行
printf("\r");
  1. 如果您换行。您可以使用终端命令移动光标

例如printf("\033[8;5Hhello");//移动到 (8, 5) 并输出 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

这是在终端中控制精确布局和格式的最佳方式

关于清除 Linux C 中终端程序的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17006262/

相关文章:

c - 有没有办法在 C 中计算 token ?

c++ - 使用openmp时出现编译错误

c - 从.txt文件中逐行读取未知数量的不同种类的变量

c - 如何让程序在没有内容可读时自行终止

linux - 将 bash 表达式传递给 AWK 以进行浮点运算

c - fork 和现有线程?

linux 在特定索引处折叠文件

linux - 删除了仍在重定向输出的文件

linux - 访问另一台远程服务器Linux、Ubuntu的权限

linux - 施根 : pass a command to be executed as if it’s in a shell