以紅色在終端上打印出“Hello, world”,對應的代碼如下:
printf("\033[31m\033[1m"); // 開始以紅色打印 printf("Hello, world\n"); //要恢復默認顏色打印,只需要再打印如下一句: printf("\033[0m");
從上面的例子可以看出printf("\033[31m\033[1m"); 和printf("\033[0m");是成對的。
你可以通過下面這段代碼,看看實際效果:
#include
int main() { fprintf(stdout, "\033[31m\033[1m"); fprintf(stdout, "HEllo, world\n"); fprintf(stdout, "\033[0m"); fprintf(stdout, "END\n"); return 0; }
在學習LINUX網絡編程的時候我們做了一個聊天系統,當時爲了界面更漂亮點,於是在百度上搜索了下關於printf()函數的用法,和大家分享下:
給printf的輸出加上些特效比如顏色,可以讓打印信息更鮮明,在debug的時候特別有用。
顏色:
#define NONE "\033[m"
#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 清除從光標到行尾的內容
\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;