线上有相关的讲解,这里就不赘述了。直接上代码:
#include <stdio.h>
#include <string.h>
#include <unistd.h>
char *STR = "/|\\";
void Progress_Bar()
{
int i = 0;
char prob[102];
memset(prob, '\0', sizeof(prob));
while (i <= 100)
{
printf("[%-100s] [%d%%]\r", prob, i);
fflush(stdout);
if (i != 99)
{
prob[i + 1] = STR[i % 3];
}
prob[i] = '=';
usleep(100000);
i++;
}
printf("\n");
}
int main()
{
Progress_Bar();
return 0;
}
此处需要注意:
由于windows和linux对printf定义操作的区别,因此会导致在windows环境下会多行输出,因为windows下的printf不是行缓冲。因此无论是否有换行,是否程序结束,是否缓冲区满,是否有刷新动作,都是会直接输出的。