今天在linux环境下写一个进度条,然后分享三个小知识。
#include<stdio.h>
#include<unistd.h>
int main()
{
int i = 0;
char bar[102];
const char *lable = "-\\|/";
bar[0] = '\0';
while(i <= 100)
{
printf("[%-101s][%d%%][%c]\r", bar.lable);
fflush(stdout);
bar[i++] = '#';
bar[i] = '\0';
usleep(10000);
}
}
知识点一:回车(\r)和换行(\n)的区别。
回车 \r 本义是光标重新回到本行开头。
换行 \n 本义是光标往下一行(不一定到下一行行首)
知识点二:Sleep,sleep和usleep。
头文件:#include <unistd.h>
定义函数:unsigned int sleep(unsigned int seconds);
函数说明:sleep()会令目前的进程暂停, 直到达到参数seconds 所指定的时间, 或是被信号所中断.
返回值:若进程暂停到参数seconds 所指定的时间则返回0, 若有信号中断则返回剩余秒数.
函数说明:sleep()会令目前的进程暂停, 直到达到参数seconds 所指定的时间, 或是被信号所中断.
返回值:若进程暂停到参数seconds 所指定的时间则返回0, 若有信号中断则返回剩余秒数.
usleep(n) //n微秒
Sleep(n) //n毫秒
sleep(n) //n秒
Sleep(n) //n毫秒
sleep(n) //n秒
知识点三:fflush。
fflush函数的作用:把文件流中未写出的数据全部写出去。函数名: fflush功 能: 清除读写缓冲区,需要立即把输出缓冲区的数据进行物理写入时头文件:stdio.h原型:int fflush(FILE *stream)其中stream是要冲洗的流fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃[非标准]fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里的东西打印到标准输出设备上printf("。。。。。。。。。。。");后面加fflush(stdout);可提高打印效率