如何使用C清除我以前在Linux终端中的输出?

时间:2017-03-01 04:29:04

标签: c

这是我用来模拟加载进度的示例程序。我现在面临的唯一问题是清除我之前输出的"正在加载:%i"

/* loading program */

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

#define TIMELIMIT 5

int main()
{
    for(int i = 0, j; i < 5; ++i) {
        j = i;
        printf("Loading: %i%%", ++j);
        sleep(1);
    //system("bash -c clear");    not working
    //printf("\033[2J\033[1;1H"); clears whole screen with no output at all
    }
    return(0);
}

3 个答案:

答案 0 :(得分:1)

如果使用\r打印\n而不是printf,则它将返回到同一行的开头而不是下一行。然后,您可以在旧行的顶部重新打印新状态。

答案 1 :(得分:1)

无论如何这里是正确的代码。感谢Mobius和Dmitri。

/* loading program */

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

#define TIMELIMIT 5

int main()
{
    for(int i = 0, j; i < TIMELIMIT; ++i) {
        j = i;
        printf("Loading: %i%%", ++j);
        printf("\r");
        fflush(stdout);
        sleep(1);
    }
    return(0);
}

答案 2 :(得分:0)

我认为这个问题的答案是系统(&#34;重置&#34;)。 这是您正在寻找的命令

    reset

此命令清除整个终端。

你的代码就像这样,

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

#define TIMELIMIT 5

int main()
{
    int i,j;
    for(int i = 0, j; i < 5; ++i) {
        j = i;
        system("reset");
        printf("Loading: %i%%\n", ++j);
        sleep(1);
    //system("bash -c clear");    not working
    //printf("\033[2J\033[1;1H"); clears whole screen with no output at all
    }
    return(0);
}