实现一个简单的进度条
来源:互联网 发布:剑网三 捏脸数据 男 编辑:程序博客网 时间: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)如果想要进一步完善的话,可以再加上旋转的动态效果图,以判断程序运行的快慢以及是否卡住,完善后的代码如下:
至此,简单进度条的实现就完成了,重点是对平常用的回车和换行有了进一步的认识,同时还了解了一点缓冲区的概念~
- 实现一个简单的进度条
- 一个简单的进度条,applet实现
- 用Ajax实现一个简单的进度条
- 用Ajax实现一个简单的进度条
- 简单实现一个文件上传的进度条
- linux中实现一个简单的进度条
- Linux中实现一个简单的进度条
- 用linux实现一个简单的进度条
- Linux中实现一个简单的进度条
- 一个简单的进度条
- shell实现一个简单进度条
- 进度条的简单实现
- 进度条的简单实现
- 简单进度条的实现
- 简单进度条的实现
- js实现的一个简单的百分比进度条
- 【Linux】Linux下实现一个简单的进度条程序
- 配置vim后,进行一个简单的进度条实现
- C++11——移动语义
- Liner_Shaker_Full
- 递归实例总结
- 内存泄漏及管理(01)-简述GC机制和检测工具
- MySQL数据库最基本的操作
- 实现一个简单的进度条
- windows下用navicat远程链接虚拟机Linux下MySQL数据库
- TCP四次挥手客户端关闭链接为什么要等待2倍MSL
- View事件分发与相关源码解析
- 二叉树的中序遍历-LintCode
- Java异常体系
- 四种代码快执行的优先级
- js封装获取元素类名(className)的方法
- weblogic奇葩的乱码问题