1. 程式人生 > >Linux C語言實現帶顏色進度條

Linux C語言實現帶顏色進度條

Linux 的 bash 命令列直譯器會輸出有顏色的字型

在這裡插入圖片描述 那怎麼做到的呢?

print( "\033[字背景顏色;字型顏色m字串\033[0m");

下面給出一些背景顏色和字型顏色 具體搭配就看你的嘍 字背景顏色範圍:40----49 40:黑 41:深紅 42:綠 43:黃色 44:藍色 45:紫色 46:深綠 47:白色 字顏色:30-----------39 30:黑 31:紅 32:綠 33:黃 34:藍色 35:紫色 36:深綠 37:白色

嘗試寫一個帶顏色的進度條

// 嘗試寫一個進度條程式
# include <stdio.h>
# include <unistd.h>
#define N 32
void process_bar(void);

int main(void)
{
  process_bar();
  return 0; 
}

void process_bar(void)
{
  char buf[N] = {0};
  int i = 0;
  for(i = 0; i < N; ++i)
  {
    buf[i] = '#';
    if((float)i / N <= 0.15)
    { // 進度小於 15% -- 紅色
      printf("\33[31m [%3.0f%%][%s]\r\33[0m", ((float)i/N)*100, buf);
    }
    else if((float)i / N <= 0.8)
    { // 進度 大於 15% 小於 80% -- 黃色
      printf("\33[33m [%3.0f%%][%s]\r\33[0m", ((float)i/N)*100, buf);
    }
    else 
    { // 進度 大於 80% 綠色
      printf("\33[32m [%3.0f%%][%s]\r\33[0m", ((float)i/N)*100, buf);
    }
    fflush(stdout); // 重新整理輸出緩衝區
    usleep(500 * 100); // 需包含標頭檔案 <unistd.h> 單位是 微秒( 1秒 = 10^6 微秒 )
  }
  printf("\n");
}

看到這了,你怎麼不自己試試呢?