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;
}

注意:终端窗口的宽度设置宽一点,否则会有问题。

posted @ 2019-11-15 10:53  ziwuxian  阅读(79)  评论(0编辑  收藏  举报