引言
我們在編寫程序的時候,通常需要終端對輸出顯示紅色或者綠色等各種顏色,以便更加清楚的對用戶做出提示。下面是Linux系統終端顏色的設置方式:
終端的字符顏色是用轉義序列控制的,是文本模式下的系統顯示功能,和具體的語言無關,shell,python,perl, C, C++等均可以調用。
轉義序列是以 ESC 開頭,可以用 \033 完成相同的工作(ESC 的 ASCII 碼用十進制表示就是 27, 等價於用八進制表示的 33)。
顯示格式: \033[顯示方式;前景色;背景色m
其中顯示方式,前景色或背景色無順序關係,其中任何一項也不是必須的。
系統默認顏色:\033[0m
顯示方式:0(默認)、1(高亮)、22(非粗體)、4(下劃線)、24(非下劃線)、5(閃爍)、25(非閃爍)、7(反顯)、27(非反顯)
前景色:30(黑色)、31(紅色)、32(綠色)、 33(黃色)、34(藍色)、35(洋紅)、36(青色)、37(白色)
背景色:40(黑色)、41(紅色)、42(綠色)、 43(黃色)、44(藍色)、45(洋紅)、46(青色)、47(白色)
示範源代碼:
/******************************************************************************
Copyright by Thomas Hu, All rights reserved!
Filename : setcolor.c
Author : Thomas Hu
Date : 2012-8-5
Version : 1.0
Description : 設置Linux終端字符顏色
******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* 設置終端爲系統默認顯示 */
void set_term_default()
{
fprintf(stdout, "\033[0m");
fflush(stdout);
}
/* 設置終端顯示方式*/
void set_term_color(const char* msg, const char* fmt)
{
char *pfmt = NULL;
pfmt = (char*)malloc(sizeof(fmt) + sizeof("\033[m"));
if(NULL == pfmt)
{
printf("Malloc error! File:%s, Line:%d\r\n", __FILE__, __LINE__);
return;
}
strcat(pfmt, "\033[");
strcat(pfmt, fmt);
strcat(pfmt, "m");
printf("Set Terminal Color to: \\033[%sm\r\n", fmt);
fprintf(stdout, pfmt);
printf(msg);
fflush(stdout);
free(pfmt);
}