详解在Linux下实现(彩色)进度条程序,并通过makefile进行编译.
彩色進度條的實現(xiàn)與makefile編譯:
- 創(chuàng)建一個process文件,在里面編寫實現(xiàn)進度條的代碼
?? 1.在編寫代碼的時候我們首先要區(qū)分兩個轉義字符:\n \r
\n:表示換行,換到下一行,并位于起始位置,并不會覆蓋原來的內(nèi)容。
\r:表示回車,回到這一行的起始位置,相當于覆蓋了之前的內(nèi)容,不會重啟一行。
2.其次了解linux下的 usleep() 函數(shù):
功能:把調(diào)用該函數(shù)的線程掛起一段時間 , 單位是微秒(即百萬分之一秒)
頭文件:unistd.h
語法: void usleep(int micro_seconds);
3.函數(shù)fflush():
作用:刷新緩沖區(qū)——>fflush(stdout);
4.以下是進度條的代碼實現(xiàn):
? 這里提一下:如果不加 fflush() 函數(shù),則會在一定的時間后一起顯示出來,并不會像進度條一樣慢慢往前增長。
- 創(chuàng)建一個makefile文件,通過makefile來執(zhí)行代碼
1.左邊為目標文件,右邊是依賴文件
2.第二行開始先使用 tab 鍵空開(規(guī)定),然后在寫入命令
- 檢驗進度條的實現(xiàn)
?
- 修改進度條的代碼,使進度條成為一個彩色進度條
Linux下printf函數(shù)顯示不同的顏色
顏色:
#define NONE "\033[0m"
#define RED "\033[0;32;31m"
#define LIGHT_RED "\033[1;31m"
#define GREEN "\033[0;32;32m"
#define LIGHT_GREEN "\033[1;32m"
#define BLUE "\033[0;32;34m"
#define LIGHT_BLUE "\033[1;34m"
#define DARY_GRAY "\033[1;30m"
#define CYAN "\033[0;36m"
#define LIGHT_CYAN "\033[1;36m"
#define PURPLE "\033[0;35m"
#define LIGHT_PURPLE "\033[1;35m"
#define BROWN "\033[0;33m"
#define YELLOW "\033[1;33m"
#define LIGHT_GRAY "\033[0;37m"
#define WHITE "\033[1;37m"
比如:
printf("\033[31m ####----->> \033[32m" "hello\n" "\033[m");
顏色分為背景色和字體色,30~39用來設置字體色,40~49設置背景:
背景色 字體色
40: 黑 30: 黑
41: 紅 ? 31: 紅
42: 綠 32: 綠
43: 黃 33: 黃
44: 藍 34: 藍
45: 紫 35: 紫
46: 深綠 36: 深綠
47: 白色 37: 白色
記得在打印完之后,把顏色恢復成NONE,不然再后面的打印都會跟著變色。
另外,還可以加一些ANSI控制碼。加顏色只是以下控制碼中的一種:
\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;xH設置光標位置
\033[2J 清屏
\033[K 清除從光標到行尾的內(nèi)容
\033[s 保存光標位置
\033[u 恢復光標位置
\033[?25l 隱藏光標
\033[?25h 顯示光標
printf( CYAN "current function is %s " GREEN " file line is %d\n" NONE,?__FUNCTION__, __LINE__ );
fprintf(stderr, RED "current function is %s " BLUE " file line is %d\n" NONE,?__FUNCTION__, __LINE__ );
return 0;
? 代碼實現(xiàn):
?
?
轉載于:https://www.cnblogs.com/cuckoo-/p/10741562.html
總結
以上是生活随笔為你收集整理的详解在Linux下实现(彩色)进度条程序,并通过makefile进行编译.的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 32.C#--方法中使用out参数做登录
- 下一篇: cmd命令行修改windows虚拟内存p