Linux小程序——进度条
1. 在linux下的缓冲有三种方式:无缓冲,行缓冲和全缓冲,当然在C程序中缓冲区的方式是以行缓冲的方式刷新的,也就是说程序要在输入流中获取一个行结束标志(换行或者是EOF)才会显示在输出屏幕上。
2. c库里的printf()函数默认输出数据在标准输出显示器上,先将数据输出在缓冲区中,该缓冲区按行刷新。
3. fflush()函数:刷新缓冲区;
通过对缓冲区和fflush()的理解,我们就可以完成一个进度条程序了。
#include<stdio.h> #include<unistd.h> #include<string.h> int main(){ int i=0; char bar[102]; memset(bar, 0, sizeof(bar)); const char* lable="|/-\\"; while(i<=100){ printf("[%-100s][%d%%][%c]\r", bar, i, lable[i%4]); fflush(stdout); bar[i++]='#'; usleep(110000); } printf("\n"); return 0; }
注意:终端窗口的宽度设置宽一点,否则会有问题。