进度条小程序

来源:互联网 发布:java gzip 压缩 编辑:程序博客网 时间:2024/05/22 13:06


                                        Linux下的进度条程序

1.回车和换行的区别:

回车用\r表示,换行用\n表示,回车表示回到当前行的开始地方,而不会到下一行,如果是要接着输出的话,本行以前的内容会被逐一覆盖掉。而换行指的是换到当前位置的下一行,而不会回到行首。

2. IO的三种缓冲机制:

我们可以看到进度条是通过printf函数实现的,没有换行,只是在不断地刷新本行的输出,所以在每一次的输出后只需要回车而不需要换行。

根据冯诺依曼原理可知,输入设备与输出设备之间的联系必须通过存储设备,所以这里就有缓冲机制的分类。IO有三种缓冲机制,分别是全缓冲,行缓冲和无缓冲。

a.全缓冲:指系统在填满标准IO缓冲区之后才进行实际的IO操作。

b.行缓冲:标准IO在输入和输出中遇到换行符时执行操作,由此可知printf函数就是一个行缓冲函数 。

c.无缓冲:标准IO库不对字符进行缓冲存储。

3.进度条的原理

a.在此进度条程序中,“#”的出现是不断递增的,且没有换行出现,所以需要的是回车符号;

b.而且每次在回车之前都需要我们手动刷新“#”的出现,用到了fflush(stdout)c.为了可以直观的看到进度条不断递增的情况,这里用到了usleep函数,此函数是以微秒计算的;

d.为了显示进度,在进度条的后边加了0%-100%,通过用“|\-//”来显示正在加载数据。

 

 

0 0
原创粉丝点击