各位看官們,大家好,上一回中咱們說的是大小寫字符轉換的例子,這一回咱們說的例子是:控制終端字符顏色 。閒話休提,言歸正轉。讓我們一起talk C栗子吧!
看官們,我們在Linux終端中使用Linux命令時,會出現各種顏色的文字,最常見的是ls命令。下面是運行ls -al命令後的屏幕截圖,大家從圖中可以看到各種顏色的字體:
那麼如何讓我們自己寫的程序也產生這些五顏六色的字體呢?我們可以通過printf()函數的格式化序列進行控制。我們看一下printf()的函數原型:
int printf(const char *format, ...);
該函數的參數數量是可變的,不管再怎麼變,它的第一個參數就是格式化序列,它用來控制輸出內容的格式。在該格式化序列中,有一些特殊功能需要借助轉義序列來實現,最常用的轉義序列是“\n"
,它表示輸出換行符。這個地球人都知道的功能,我就不舉例子了,如果真有哪位看官不知道,那麼我到想看看這位外星人長的什麼模樣。台下看官們都在相互看對方,好像對方就是外星人似的,哈哈。
好了,大家別看外星人了,我們還是一起來看看轉義序列吧,這次我們看的是控制終端中文字顏色的轉義序列”\033“
,這是一個八進制序列,轉換為字符後是ESC,因為它不像"\n"
一樣只有一個字符,所以我們經常用它的八進制形式,詳細的使用格式為:
\033[字符的顯示方式;字符的顏色;字符的背景顏色m 需要顯示的字符 \033[m
其中字符的顯示方式、字符的顏色和字符的背景顏色都用數字來表示,不同的數字代表不同的意思,各個數字代表的含義如下:
字符的顯示方式:0(默認值)、1(加粗)、2(灰顯)、3(斜體)、4(下劃線)、7(反顯)、9(刪除線) 字符的顏色:30(黑色)、31(紅色)、32(綠色)、 33(黃色)、34(深藍色)、35(紫色)、36(淺藍色)、37(白色) 字符的背景顏色:40(黑色)、41(紅色)、42(綠色)、 43(黃色)、44(藍色)、45(紫色)、46(淺藍色)、47(白色)關於這些數字我做一點說明:
每個數字後面都有一個括號,括號中的內容表示該數值對字符的控制形式。比如字符的顏色這一項中,31(紅色)表示使用紅色來顯示字符,我們會在終端中看到printf輸出紅色的字符。 在字符的顯示方式中沒有數值5、6和8。因為這幾個數值控制的顯示方式和默認的顯示方式十分類似,所以我沒有單獨來說明它們代表的顯示方式。 字符的顏色及其背景顏色都是從數值x0到x7,只不過這個x的數值一個是3,另外一個是4。數值x7以後的數值沒有特別的意義。接下來我們看個例子:
printf("\033[1;30;47m hello word \033[m \n");
該例子表示在終端中輸出字符串:hello word
。字符的顯示方式通過轉義序列來控制,其含義是:使用加加粗方式顯示白底黑字形式的字符串。
看官們,下面是程序的運行結果,該結果中除了包含我們例子中代碼的運行結果外,還有其它形式的顯示方式,請大家參考:
看官們,在例子中為了顯示更加清楚一些,我們都使用加粗方式來顯示字符,完整的代碼放到了我的資源中,大家可以下載使用。
各位看官,關於控制終端字符顏色的例子咱們就說到這裡。欲知後面還有什麼例子,且聽下回分解