最近做项目时发现一个有趣的东西,进度条,就想来怎么实现,查看别人写的都是在printf时加了一个’\r’,但是也只是实现了单线程的一个进度条显示,一下是多线程的进度条展示但是还是有问题的,如果有后续的打印就会出现打印错乱的问题,若有高手路经此地望指点一二
/*************************************************************************
> File Name: print.c
> Author:
> Mail:
> Created Time: Tue 09 Jul 2019 12:06:16 PM UTC
************************************************************************/
#include<stdio.h>
#include <unistd.h>
#include <pthread.h>
void *print(void *arg)
{
int id = *(int *)arg;
int total = 100000;
int i, tex, j;
char buf[1024] = {0};
for (i = 0; i <= 100000; i++) {
tex = i / (float)total * 100;
if (tex <= 100) {
buf[tex] = '.';
//fprintf(stderr, "\033[%dB%-100s %3d%%\r \033[%dA", id, buf, tex, id);
fprintf(stderr, "%-100s %3d%%\r", buf, tex);
}
}
// printf("\033[u\n"); //单线程可用
pthread_exit(0);
}
int main()
{
int i;
pthre