这是我用来模拟加载进度的示例程序。我现在面临的唯一问题是清除我之前输出的"正在加载:%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);
}
答案 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);
}