国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

Linux簡易彩色進度條的實例代碼

2024-08-28 00:02:12
字體:
來源:轉載
供稿:網友

在實現進度條之前,我們需要先簡單了解一些知識:

一、緩沖區:

緩沖區分為無緩沖、行緩沖、全緩沖。

無緩沖:表示的是沒有緩沖,可以將信息立馬顯現出來,典型代表是標準錯誤流stderr。

行緩沖:表示的是輸入輸出遇到換行才執行真正的I/O操作。典型的代表是鍵盤的操作。

全緩沖:表示的是輸入輸出寫滿緩沖區才執行I/O操作。典型的代表是磁盤的讀寫。

所以我們在實現的時候需要每次輸出完都需要使用fflush(stdout)將緩沖區刷新,以便下一次的輸出。

二、'/r'和 ‘/n'的區別:

回車用'/r'表示,表示的是回到這行的起始位置。換行用‘/n'表示,表示的是換行到下一行。所以我們在實現的時候需要用的是'/r',才能實現進度條的效果。

三、如何彩色輸出:

終端的字符顏色由轉義序列控制,是文本模式下的系統顯示功能,與具體語言無關。轉義序列以控制字符'ESC'開頭。多數轉義序列超過兩個字符,故通常以'ESC'和左括號'[‘開頭。該起始序列稱為控制序列引導符,通常由'/033[‘或'/e[‘代替。

通過轉義序列設置終端顯示屬性時,可采用以下格式:

/033[ Param {;Param;…}m 或 /e[ Param {;Param;…}m

其中,'/033[‘或'/e[‘引導轉義序列,'m'表示設置屬性并結束轉義序列。Param為屬性值,{…}表示可選(多個參數之間用分號隔開,與順序無關)。

在實現中為了增加可讀性可以我們可以將顏色定義為宏,再進行使用。

注意:'/033[0m'用于恢復默認的終端輸出屬性,否則會影響后續的輸出。

四、usleep()函數:

usleep()函數的功能是把調用該函數的線程掛起一段時間 , 單位是微秒(即百萬分之一秒); 頭文件: unistd.h 語法: void usleep(int micro_seconds); 在實現過程中我們可以調用usleep()函數來實現每0.1s刷新進度條的現象。

代碼實現如下:

#include <stdio.h>#include <unistd.h>#include <string.h>#define NONE "/e[0m"#define RED  "/e[0;31m"#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 <=10)      printf(RED"%s[%d%%%c]/r"NONE,str,index*5,tmp[index%4]);    else      printf(BLUE"%s[%d%%%c]/r"NONE,str,index*5,tmp[index%4]);    fflush(stdout);    index++;    usleep(100000);  }    printf("/n");  return 0;}

效果如下:

這里寫圖片描述

總結

以上所述是小編給大家介紹的Linux簡易彩色進度條的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網之家網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 旺苍县| 长垣县| 林口县| 德令哈市| 醴陵市| 城步| 康乐县| 上犹县| 临沭县| 犍为县| 孝感市| 东丰县| 建平县| 海兴县| 祁东县| 页游| 法库县| 新宁县| 乐山市| 贵阳市| 柳林县| 衡阳县| 邻水| 南溪县| 定襄县| 周宁县| 浑源县| 临漳县| 若尔盖县| 安陆市| 青州市| 自治县| 泊头市| 云霄县| 尚义县| 盘山县| 上蔡县| 库伦旗| 北票市| 南川市| 共和县|