博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux下vim上编辑实现进度条
阅读量:5057 次
发布时间:2019-06-12

本文共 1003 字,大约阅读时间需要 3 分钟。

1.效果展示:

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

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

2.原理描述:

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

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

地址:

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

3.代码:

#include
#include
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下程序展示:

赐教!

转载于:https://www.cnblogs.com/li-ning/p/9489982.html

你可能感兴趣的文章
App右上角数字
查看>>
从.NET中委托写法的演变谈开去(上):委托与匿名方法
查看>>
六、PowerDesigner 正向工程 和 逆向工程 说明
查看>>
小算法
查看>>
201521123024 《java程序设计》 第12周学习总结
查看>>
贪吃蛇游戏改进
查看>>
新作《ASP.NET MVC 5框架揭秘》正式出版
查看>>
“前.NET Core时代”如何实现跨平台代码重用 ——源文件重用
查看>>
【POJ1845】Sumdiv(数论/约数和定理/等比数列二分求和)
查看>>
在WPF中使用Caliburn.Micro搭建MEF插件化开发框架
查看>>
IdentityServer4-用EF配置Client(一)
查看>>
UWP: 掌握编译型绑定 x:Bind
查看>>
asp.net core系列 35 EF保存数据(2) -- EF系列结束
查看>>
WPF程序加入3D模型
查看>>
WPF中实现多选ComboBox控件
查看>>
C++程序设计实践指导1.14字符串交叉插入改写要求实现
查看>>
网络七层协议
查看>>
C++学习笔记29,引用变量(1)
查看>>
具体解释coredump
查看>>
shell读取mysql数据库
查看>>