C语言实现进度条Demo(vs/gcc)

2017-04-02 12:08 阅读 1,135 次 评论 1 条

在计算机执行任务的时候,进度条会以一种实时的,以图片、符号等显示处理任务的速度、完成度及剩余任务量的大小、百分比等来呈现给我们,比如我们在下载东西,观看视频时的缓冲区,拷贝大文件的时候都会看到它的缩影。

实现的进度条功能

设置一个区间可以显示100个#字符,左右区间各有一个中括号,但是中括号位置固定不变,在方括号内,我们用#字符来对其填充,每隔一段时间,进度条刷新一个#字符,同时在右括号的外面放置一个实时显示进度的百分比计数器,直到区间被填充满为止。

设计思想

①实时显示:利用fflush(stdout),清空标准输出缓冲区,在C语言中,缓冲区是以行形式读取和存储的,所以若未遇到\n回车换行,缓冲区不会将数据立刻显示出来,而是进入sleep函数,但是实际上最新被执行的仍然是sleep之前的程序,因为没有\n出现,因此数据会被先暂放在缓冲区内,使用fflush强制刷新就可以实时的显示。

②进度条的递增:这里用到的是覆盖的思想,就是说第一次显示一个#,第二次从最左边开始显示2个#,以此类推。实现这样的功能也很简单,在C/C++中,\n代表的是回车换行,回车与换行时两个动作,回车是回到当前行的行首,换行时换到下一行,这里我们使用\r来回车。

进度条Demo源代码(vs2017)

Gcc实现进度条Demo

这些小Demo还是比较有趣的,虽然实现的代码很少,但是这样一个程序可以让我们熟悉一下编程中实时性,以及对回车换行的误解,所以还是有必要阐述一下的。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:C语言实现进度条Demo(vs/gcc) | 术与道的分享
分类:编程素养 标签:, ,
1024do.com导航_术与道导航平台

发表评论


表情