Linux下vim上编辑实现进度条

文章最新整理

Linux任务进度条实现 - 码到城攻Linux下vim编辑模拟实现了任务进度条的前进、百分比、以及稍微的动画特效https://www.codecomeon.com/posts/112/

1.效果展示:

进度条,先来看一个效果:

这是进度结果,模拟实现了进度条的前进、百分比的现实、以及稍微的动画特效。

2.原理描述:

因为Linux系统下的输出有缓存,如果及时刷新显示,就可以得到我们想看到的效果,这里必须调用:

fflush(stdout);

解释一下,fflush(stdout),是对标准输出流的清理,作用是立即清除输出缓存区的东西,并输出,有关于fflush(stdout),请移驾另一篇博客:

地址:fflush(stdin)与fflush(stdout)_码城的博客-CSDN博客_fflush

其实原理就是很简单,先看看代码:

3.代码:

#include<stdio.h>
#include<string.h>

void porc()
{
    int rate = 0;
    char bar[102];                 //进度条长度
    memset(bar,'\0',sizeof(bar)); 
    const  char* lable = "|/-\\";  //动画特效
    printf("加载中,请稍后...\n");
    while(rate <= 100)
    {
		bar[rate] = '=';
		printf("[%-101s][%d%%][%c]\r",bar,rate,lable[rate%4]);
		fflush(stdout);            //强制刷新
		rate++;
		usleep(100000);            //间隔时间
    }
    printf("\n");
    printf("加载完成...\n");
}

int main()
{
    porc();
    return 0;
}

A:数组在进度条的整个过程中,有一个缓存的作用,和进度区间的展示;

B:在printf()后使用fflush(stdout)的作用是立刻将要输出的内容输出。 当使用printf()函数后,系统将内容存入输出缓冲区,等到时间片轮转到系统的输出程序时,将其输出。 

使用fflush(out)后,立刻清空输出缓冲区,并把缓冲区内容输出,每一个循环,‘=’比前一个循环多一个,第二次的输出都去覆盖第一个的输出,如此才展示进度的动态效果:

4.Linux下程序展示:

赐教!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值