我们在使用一些软件的时候经常会看到一个进度条跑呀跑呀,那么我们如何用C语言来实现它呢?
首先我们需要了解一些基础知识:
1)并不是进度条自己在往前跑,而是因为每个时刻看到的进度的长度不一样,这样人眼就会看到一个动态的效果,好像是进度条在增长。
2)在屏幕上打印字符串我们需要用到C语言中的printf函数。
我们要实现在同一行先打印一个“=“,然后光标回到最左边,再打印”==“,之后再打印”===“,这样每次当前打印的都比上一次多一个‘=’。原理看起来挺简单,那么要如何实现呢?
3)首先要去了解printf函数在屏幕上打印字符串的原理:
调用printf函数的时候它会先把数据放到缓冲区,那么什么时候时候会把它刷新到屏幕上呢,当它发现缓冲区里有\n出现,或者是程序退出的时候。
4)那么问题又来了,我们希望每一次都把字符串打印到同一行,当然就不能用\n啦,要怎么办呢?灵光一现,突然想起来库里提供了一个叫做fflush的函数,可以强制刷新缓冲区里的数字。
好啦,所有关键性的问题都已解决,下面开始动手写程序:
为了效果更美观和清晰,加上了[],百分比,最后还有“|/-\”让它可以动起来像一个圆一样(但是中间的-太短,看起来像个椭圆),还用到了一些printf的格式代码 -(左对齐),101(字段宽度),\r(回车)
效果如下(没办法展示动态的过程):