目录
一、必备知识
在写进度条之前,我们需要先了解一下回车换行和缓冲区这两个概念。
1.1 回车换行
首先要明确,回车是回车,换行是换行,二者其实是不同的动作,这就不难解释我们经常见到的回车键的样式了。换行是指光标垂直下移到下一行,回车是指将光标退回到行的开头。
在C语言中换行我们用 \n,回车我们用 \r
1.2 缓冲区
先来看下sleep函数的作用:
运行后的结果是输出Hello world!在两秒过后才会显示出下一行代码。
因此sleep函数的作用是让程序休眠一段指定好的时间。
倘若我们把输出中的换行符去掉
可以看到输出的语句是在输入框的左侧的,并且直观上看是在休眠两秒后才输出的内容。
可是我们知道程序是自上而下执行的,打印语句肯定最先执行,那么为什么会是休眠两秒后才打印出了内容呢?
实际上打印语句是最先执行的,只不过在sleep期间,它没有显示出来而是被保存起来了。
保存的内存空间便是缓冲区。在程序退出时,缓冲区的内容才被刷新了出来。
那么如果要强制刷新呢?
可以利用fflush语句,打印的语句是被存放在输出流这个文件中的,我们使用该语句即可强制刷新。
二、进度条的实现
首先创建三个文件:processBar.h/.c是实现进度条的头/源文件,main.c是最终呈现进度条的文件:
然后编写好代码结构:
2.1 进度条基础——倒计时读秒的实现
有了以上基础,我们首先来实现一个倒计时读秒的小程序。
2.2 进度条的初步实现
到了这里,我们就可以正式开始实现进度条了,直接来看代码:
我们也可以再次整理下代码,使代码更清晰并可以在main中由自己放入参数调用:
2.3 进度条的实际实现
2.4 进度条的回调实现
好了,至此我们进度条的实现就完成啦!