Linux--简单进度条的实现

我们需要注意以下几点:
  1. 进度条的表示:首先可以使用‘#’或者其他符号来表示加载成功的进度,建立一个数组将符号存入,从0%~100%可以使用101个符号来表示。因为是字符串需要有‘\0’所以数组的大小可以确定在102
  2. 显示:因为不需要多行显示,只需刷新当前进度那么输出时只需要回车‘\r’,不需要换行‘\n’
  3. 为了表示进度条正常工作显示可以使用‘-’,‘\’,‘|’,‘/’ 来表示顺时针加载小圈
  4. 缓冲区问题:数据通过CPU计算后并不是直接刷新至输出面板上而是先输出至内存缓存再刷新至输出设备 ,一般C程序中会遇‘\n’自动强制刷新缓冲区,而我们的程序中没有‘\n’,所以这时需要使用函数fflush()来进行缓冲区的刷新。
[root@localhost jindutiao]# cat jindutiao.c
#include<stdio.h>
#include<unistd.h>

void fun()
{
    int num=0;
    char pStr[102]={'\0'};
    char label[4]={'-','\\','|','/'};
    while(num <= 100)
    {
        printf("[ %-100s %d%% %c ]\r",pStr,num,label[num%4]);
        pStr[num++]='#';
        pStr[num]='\0';
        fflush(stdout);
        usleep(100000);
    }
    printf("\n");
}

int main()
{
    fun();
    return 0;
}
[root@localhost jindutiao]# gcc jindutiao.c
[root@localhost jindutiao]# ./a.out
^C######################################################                                               54% | ]


猜你喜欢

转载自blog.csdn.net/baidu_37964071/article/details/80990021