前置知识
回车与换行
换行就是相当于vim中的命令模式的j。让光标直接向下一行。
回车则是相当于vim中的^,回到行头。
因此像c语言中的\n其实执行了回车与换行两个动作。
缓冲区
讲缓冲区概念前,我们先编写一个简单的程序:

简单运行一下:

当然没什么问题。
这时候我们再将\n去掉看看效果:



这时候我们竟然是先休眠再打印,莫非是先执行sleep再执行printf?
答案是必不可能,c语言一定是从上至下执行语句的。
根本原因是,printf确实执行完毕了,但是放在内存的缓冲区当中。
只有当缓冲区刷新的时候,内容才会打印到屏幕上。
缓冲区在以下几种情况下会刷新:
- \n
- 缓冲区满了
- 程序结束
- fflush强制刷新
fflush
fflush是c语言中一个函数,我们来man一下看看其成分:

注意到,fflush传入的参数是FILE *stream
这时我们就又要提到一个小知识了,c语言会默认帮我们打开三个文件流:stdin、stdout、stderr。
前者是键盘,后两者是显示器。
因此我们传入stdout即可刷新缓冲区:


完美达到效果了呢!
倒计时
有了前面的知识储备,我们可以先写一个简单的倒计时程序来练练手:

效果如下:


amazing ah!
进度条
好了,现在开始正式进入我们的进度条编写。
首先我们先创建所需的文件:Proccess.c Proccess.h Main.c makefile
首先我们要明确一下进度条使用的场景,像下载情景。当然我们现在还未接触网络,因此可以模拟一个下载场景:

那么现在我们只需要实现一个简易的进度条即可:

来尝试简单调用一下:



完美依照预期进行了
颜色优化
我们打印的这个进度条多少有点简陋了,可以用一些颜色块代替:


效果如下:

