目录
如何在Linux中用vim写一个这样的小程序呢?
1、准备工作
包含头文件
#include<stdio.h>
#include<string.h>(我们初始化数组要用到memset)
#include<unistd.h>(要用到usleep)
2、定义数组
我们要开101个字节大小的字符串数组,其中给‘\0’预留一个空间。
再开一个数组存放你想要的符号(进度条在增长的同时符号也在变化,以免看不出来卡顿)。
3、打印
我们使用一个while循环
printf("[%-100s][%d\%][%c]\r",进度条数组,进度百分比,符号数组)
为什么要用-100呢,%100s可以预留100个打印一个字符的空间,那为什么要用-100呢,用%100s会导致
进度条反过来打印,因为c语言默认是右对齐,从右向左打印字符串。所以要用%-100s。
结尾为什么要用\r 不用\n呢,效果是这样的
打印一个字符他就会换行,\n是回车(将光标移到这一行的最前端)+换行(将光标换到下一行) 而\r 只是单纯的回车。
\r的效果:
但这里有个弊端,我们在输出的时候,输出的数据会先存储到缓冲区,\n起到了刷新缓冲区的作用,可以将输出的数据显示到屏幕上。而\r没有刷新缓冲区的能力,我们就要用到
fflush(stdout);
来手动刷新缓冲区。
4、usleep
让输出每个字符是间隔n秒,sleep()函数中的单位是秒,我们这里用到的是usleep()单位是微秒。
5、联动
将各各步骤联动起来
效果:
linux小程序 进度条
当然最后你也可以让他更加美观,改变底色,改变字体颜色。