【Linux】Linux系统下进度条的模拟实现

前言:

在我们平时下载电影或者进入Centos平台下肯定都见过一个描述的当前进度的标识,----这就是一个进度条

本篇blog,我就来讲讲我的实现。


实现思路:

(1)进度条是从0-100%,开辟一个长度为101的字符数组,最后一个放\0,每次往前走一个我就打印一个=这个符号,形象地展示此时的进度。

(2)要借助缓冲区,每次从缓冲区取字符数组,利用\r(只回车不换行),只回车不换行的意思就是:每次接着在这一行打印,如果换行的话,那效果就是:第1行打印一个=,第2行打印==,类似……所以,我们在这里选择只回车不换行功能的\r,(注意转义字符)。

(3)在C语言中,格式输出中,我利用了

<span style="font-family:Microsoft YaHei;font-size:14px;"> printf("[%-100s] %d %% %c",rate,i+1,move[i%4]);  </span>

[%-100s],意思是:打印时可以将右方括号]固定位置在100位置处,负号的原因是:从左往右打印。

(4)为方便大家看此时是正在进行,还是由于网络等原因,进度卡了。我在这里利用了:

<span style="font-family:Microsoft YaHei;font-size:14px;">   char move[5]="-\\|/";  </span>
来简易实现一个顺时针的球(若大家认为实现的不美观,不要见笑,偷笑)。


代码如下:

    #include <stdio.h>  
    #include "string.h"  
      
    int main()  
    {  
        int i=0;  
        char move[5]="-\\|/";  
        char arr[101]; 
        memset(arr,'\0',sizeof(arr)/sizeof(arr[0]));  
        while(i<100)  
        {  
            arr[i]= '=';  
            printf("[%-100s] %d %% %c",rate,i+1,move[i%4]);  
            printf("\r");  
            usleep(100000);  
            fflush(stdout);  
	    i++;
        }  
        printf("\n");  
          
        return 0;  
    } 

大家可以在自己的机器平台上运行看一下动态效果,由于是动态效果,我在这里呢,只能把最终截图分享给大家。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值