Linux下的进度条程序

在Linux环境下写一个会变颜色的进度条程序:
Linux环境下有三种缓冲方式:1.无缓冲 2.行缓冲间 3.全缓冲 C语言中采用的是行缓冲。
\r是回车回到行首,而不会到达下一行,如果继续输出,则会造成覆盖,所以进度条选择用\r输出。
fflush(stdout)是清空缓冲,强制把结果输出到屏幕上。

#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

int main(){

    char bar[102];

     const char s[] = "|/-\\";

     memset(bar,0,sizeof(bar));

     int rate = 0;

    for(;rate < 101;rate++){

      if(rate <= 20)

        printf("[%d%%][%c]\033[31m[%s]\r",rate,s[rate%4],bar);

      else if(rate <= 60)

        printf("[%d%%][%c]\033[33m[%s]\r",rate,s[rate%4],bar);

      else 

        printf("[%d%%][%c]\033[32m[%s]\r",rate,s[rate%4],bar);                                                         

      bar[rate] = '#';

      fflush(stdout);

      usleep(100 * 1000);

      printf ("\033[0m");

    }

printf("\n");

return 0;

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值