小编典典

清除终端程序Linux C / C ++的输出

linux

我有兴趣清除由printf语句生成的C程序的输出,该语句长多行。

我最初的猜测是使用

 printf("output1\n");
 printf("output2\n");
 rewind(stdout);
 printf("output3\n");
 printf("output4\n");

但这产生了

 output1
 output2
 output3
 output4

我希望它会产生

 output3
 output4

有谁知道如何获得后者的结果?


阅读 578

收藏
2020-06-02

共1个答案

小编典典

如果您还记得同时删除了控制字符,则可以在端子和管道上获得理想的结果。这是硬编码的两行。

#include <stdio.h>

int
main ()
{
    fputs("output1\n",stdout);
    fputs("output2\n",stdout);
    fputs("\033[A\033[2K\033[A\033[2K",stdout);
    rewind(stdout);
    ftruncate(1,0); /* you probably want this as well */
    fputs("output3\n",stdout);
    fputs("output4\n",stdout);
    return 0;
}
2020-06-02