赞
踩
进度条:
进度条即计算机在处理任务时,实时的,以图片形式显示处理任务的速度,完成度等剩余未完成任务量的大小,和可能需要处理时间,一般以长方形条状显示。日常生活中,下载,复制等等操作,我们都会见到进度条的身影。
所以今天在cent os环境下的Linux实现一个简单的进度条。
那么工欲善其事必先利其器,我们先来了解一下几点基础知识。
1. 我们想做一个怎么样的进度条?
我们做的进度条是一个方括号不动 方括号里逐渐填充#的一个进度条
那么 我们就需要固定一个长度 向其中添加东西
我们就需要用到 printf(“[-100s%]”,buf);这里的100是规定长度但是100是从右向左输出 所以我们用到-100
2. 进度条怎么处理进度增加?
这里 我们需要知道回车和换行的知识 回车和换行是不一样的
回车指的是回到一行的首部
换行指的是换到下一行
那么我们如果需要让进度条逐渐增加 我们就仅仅只需要回车这一个功能
在C语言里回车是 /r
3. 进度条如何缓慢显示?
毫无疑问 这里需要用(秒为单位)sleep/usleep(微秒为单位)函数
但是 当我们先打印再用usleep时 我们发现它并没有先打印 而是隔了一段时间后全部显示
所以 我们还需要了解缓冲区
缓冲区分为无缓冲、行缓冲、全缓冲。
无缓冲:表示的是没有缓冲,可以将信息立马显现出来,典型代表是标准错误流stderr。
行缓冲:表示的是输入输出遇到换行才执行真正的I/O操作。典型的代表是键盘的操作。
全缓冲:表示的是输入输出写满缓冲区才执行I/O操作。典型的代表是磁盘的读写。
根据冯诺依曼思想 cpu处理完放到内存中 内存之后才会输出到输出设备上 所以我们需要刷新stdout
printf是一个行缓冲函数,先写到缓冲区,满足条件后,才将缓冲区刷到对应文件中,
刷缓冲区的条件如下:
满足上面4个条件之一缓冲区就会刷新(1)缓冲区填满;
(2)写入的字符中有‘\n’;
(3)调用fflush手动刷新缓冲区;
(4)调用scanf要从缓冲区中读取数据时,也会将缓冲区内的数据刷新;
所以我们应该用fflush函数刷新缓冲区以便让他立马显示到屏幕上
那么剩下的不赘述
建loading.c 和 Makefile文件
loading.c:
Makefile :
之后我们运行并查看结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。