实现一个简单的进度条

来源:互联网 发布:剑网三 捏脸数据 男 编辑:程序博客网 时间:2024/05/29 03:11

提纲:本文主要说明了Linux系统和Windows系统下回车和换行的区别,以及Linux下缓冲区的问题,最后运用这两点知识实现一个简单的进度条。
一、关于回车和换行
不同操作系统下的回车和换行
1、Windows操作系统下
回车’\r’:就是将光标移到本行的开头,并将之前的内容覆盖掉;
换行’\n’:就是将光标移到下一行的开头;

2、Unix/Linux系统下
回车’\r’:就是将光标移到本行的开头,并将之前的内容覆盖掉;
换行’\n’:就是将光标移到下一行,但并不一定是下一行的开头,如果下一行有内容的话就将光标移到那些内容的后面,如果下一行没有内容的话,就将光标移动到下一行的开头;

二、在Linux系统下实现一个简单的进度条
1、基本思路
(1)要实现一个进度条,首先先要给一段空间,我们假设这段空间是100,并且将它控制在[]之间;
(2)由于是一个进度条,因此要动态的增长,于是我们第一次输入一个字符‘#’,然后加上睡眠时间,再回到该行的起始位置输入两个‘#’字符,以此类推,就达到了进度条的效果;
2、代码实现,有了以上的思路,我们简单的实现一下代码:
这里写图片描述
运行此代码之后发现我的进度条是一段一段打印出来的,这就很尴尬了,查阅相关资料之后才发现,是因为我没有刷新缓冲区造成的
3、刷新缓冲区
printf是一个行缓冲函数,先写到缓冲区,满足条件后,才将缓冲区刷到对应文件中,刷缓冲区的条件如下:
(1)缓冲区填满;
(2)写入的字符中有‘\n’ ,’\r’;
(3)调用fflush手动刷新缓冲区;
(4)调用scanf要从缓冲区中读取数据时,也会将缓冲区内的数据刷新;
满足上述条件之一,就可以刷新缓冲区。
我们再来对我们的代码进行修改:在每次打印完之后,用fflush函数对缓冲区进行刷新,代码如下:
这里写图片描述
至此,我们可以实现进度条的基本功能了。
4、对进度条的两点完善
(1)由于在实际场景中,我们通常会看到进度条的后面都会有进度显示,即当前的进度是百分之几,因此我们在代码中加上进度显示,代码如下:
这里写图片描述
效果如下:
这里写图片描述
(2)如果想要进一步完善的话,可以再加上旋转的动态效果图,以判断程序运行的快慢以及是否卡住,完善后的代码如下:
这里写图片描述
至此,简单进度条的实现就完成了,重点是对平常用的回车和换行有了进一步的认识,同时还了解了一点缓冲区的概念~

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 胃口太好越来越胖怎么办 心情一紧张心跳手抖怎么办 消防兵新兵连俯卧撑不够怎么办 cf枪王永久禁赛怎么办 换了手机号花呗怎么办 xp系统无限重启怎么办 魔域配置资源读取错误怎么办 魔域异地交易了怎么办 魔域手游宝宝亲密度不够怎么办 魔域手游怎么改密码忘了怎么办 魔域装备注灵怎么办 lol外服账号忘记了怎么办 美服lol下载慢怎么办 台服天堂2延迟怎么办 梦幻专用瑞兽没有泰山怎么办 冲错了游戏点券怎么办 新手玩联盟很菜怎么办 cf玩一会儿卡退怎么办 魔域先锋区封号了怎么办 吃了减肥药头疼怎么办 冬天没用完的霜怎么办 手表带起来大了怎么办 碰到舞警打人该怎么办 合租者偷了东西却没有证据怎么办 钥匙锁在房间了怎么办 家里门钥匙丢了怎么办 合租朝北晒衣服怎么办 卧室门钥匙丢了怎么办 邻居在我家防盗窗上凉被子怎么办 有钥匙打不开门怎么办 白色腈纶衣服洗完发黄怎么办 在部队有人整你怎么办 老公掉粪坑了你怎么办图片 好久没跑步腿疼怎么办 跑1000米要5分钟怎么办 孩子眼睛近视加散光怎么办 在部队混的差怎么办 2岁宝宝走路踮脚怎么办 宝宝走路膝盖弯曲不直怎么办 做了蛙跳大腿疼怎么办 跳完蛙跳腿疼怎么办