1. 程式人生 > >linux—進度條彩色版簡單實現

linux—進度條彩色版簡單實現

一、緩衝區理解: 1.無緩衝:將所得到的資訊馬上顯示出來。 2.行緩衝:輸入輸出遇到換行才執行的I/O操作,比如鍵盤操作。 3.全緩衝:輸入輸出寫滿緩衝區蔡執行I/O操作。比如磁碟讀寫。 當我們在實現的時候需要使用fflush(stdout)來重新整理緩衝區,以便下一次的輸出。 二、fflush的理解: 1.對於輸出流,fflush()強制寫入給定輸出或更新的所有使用者空間緩衝資料。 2.對於輸入流,fflush()丟棄任何緩衝資料。 這是從底層檔案中獲取的,但還沒有被應用程式消耗掉。流的開放狀態不受影響。 三、’\r’和’\n’的區別: 回車用’\r’表示,表示是回到改行的初始位置,換行用’\n’表示,表示直接換到下一行,所以我們需要用’\r’,以此達到進度條的效果。 四、顏色設定及擴充套件: 1.顏色設定:

    #define NONE  "\e[0m"                                                                                           
    #define RED   "\e[0;31m"                                                                                        
    #define BLUE  "\e[0;34m"                                                                                        
    #define GREEN "\e[0;32m"    

2.擴充套件:

編號 含義
40 黑色
41 深紅色
42 綠色
43 黃色
44 藍色
45 紫色
46 深綠色
47 白色
控制碼 作用
\033[0m 關閉所有屬性
\033[1m 設定高亮度
\033[4m 下劃線
\033[5m 閃爍
\033[7m 反顯
\033[8m 消隱
\033[30m– \033[37m 設定前景色
\033[40m– \033[47m 設定背景色
\033[nA 游標上移n行
\033[nB 游標下移n行
\033[nC 游標右移n行
\033[nD 游標左移n行
\033[y;H 設定游標位置
\033[2J 清屏
\033[K 清除從游標到行尾的內容
\033[s 儲存游標位置
\033[u 恢復游標位置

五、sleep和usleep簡單介紹: 1,sleep:以秒為單位暫停讀秒; 2.usleep:以毫秒為單位暫停讀秒; 六、程式碼實現:

#include <stdio.h>
#include <unistd.h>
#include <string.h>

#define NONE  "\e[0m"
#define RED   "\e[0;31m"
#define GREEN "\e[0;32m"
#define BLUE  "\e[0;34m"

int main()
{
    int index = 0;
    char str[21];
    memset(str,'\0',sizeof(str));
    char tmp[5] = {'-','\\','|','/','\0'};
    while(index <=20)
    {   
        str[index] = '#';
        if(index <=14)
            printf(RED"%s[%d%%%c]\r"NONE,str,index*5,tmp[index%4]);
        elseif(index<=14)
            printf(BLUE"%s[%d%%%c]\r"NONE,str,index*5,tmp[index%4]);
        else
            printf(GREEN"%s[%d%%%c]\r"NONE,str,index*5,tmp[index%4]);
        fflush(stdout);
        index++;
        usleep(100000);
    }   
    printf("\n");
    return 0;
}