【问题标题】:Clearing output of a terminal program in Linux C在 Linux C 中清除终端程序的输出
【发布时间】:2013-06-05 01:39:04
【问题描述】:

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

我该怎么做?

【问题讨论】:

    标签: c linux unix terminal


    【解决方案1】:

    我尝试回答这里的最佳预期。

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

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

    【讨论】:

    • 你完全没有抓住重点。关键不是让它停止打印,而是从终端清除它(比如如果你想刷新终端视图等)
    【解决方案2】:

    有几种方法可以删除 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

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

    【讨论】:

    • \033[8;5Habcd 是什么意思?
    • 移动到 (8,5) 并输出 abcd。 ;) 在您的情况下,您应该使用 printf("\033[1A") 向上移动一行。
    【解决方案3】:

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

    printf("\033[2J");
    

    cout << "\033[2J";
    

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

    【讨论】:

      猜你喜欢
      • 2010-11-23
      • 2013-05-09
      • 1970-01-01
      • 2011-05-03
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      • 2012-03-06
      • 2014-05-18
      相关资源
      最近更新 更多