注意:Windows的console是不支援ANSI逃脫碼,想在Windows的console換色,本篇並不適合。
- ANSI逃脫碼介紹
圖一、CSI標準格式 |
注意:通常n1是填入 \x1b,為什麼呢?因為在ASCII TABLE內0x1B代表的就是escape,也就是所謂的逃脫字元!
圖二、ASCII TABLE - 0x1B |
----
看完上面階段,想必大家還是霧煞煞這鬼東西到底怎麼用對吧?接下來就實際拿變色的陶托碼來講解吧!
下方是一個紅色且為粗體的逃脫碼。
\x1b[;31;1m
這鬼東西要怎麼拆開來看呢?
(1) \x1b : 這就跟上面解講得如同,0x1b代表著逃脫字元,代表的逃脫碼的開始。
(2) SGR 31 : 我們查詢一下SGR表裡面31代表什麼吧!
圖三、SGR 30-37 |
圖四、Color table |
(3) SGR 1 : 我們來看一下SGR 1代表什麼功能吧!
圖五、SGR 1 |
所以我們將 \x1b[;31;1;m 組合起來就會變成 粗體紅色啦!是不是很簡單呢?
假如我們要使用粗體藍色,那麼該怎麼做呢?如法炮製就是使用\x1b[;34;1;m 就可以啦!
更詳細的參數請參閱:ANSI escape code WIKI
- 實際操作
下面程式就是透過C語言來印出有顏色的字啦!
#include <stdio.h> #define RED_BOLD "\x1b[;31;1m" #define BLU_BOLD "\x1b[;34;1m" #define YEL_BOLD "\x1b[;33;1m" #define GRN_BOLD "\x1b[;32;1m" #define CYAN_BOLD_ITALIC "\x1b[;36;1;3m" #define RESET "\x1b[0;m" int main(void) { //* RED BOLD */ printf(RED_BOLD"This line will be print out with color red and font bold.\n"RESET); //* BLU BOLD */ printf(BLU_BOLD"This line will be print out with color blue and font bold.\n"RESET); //* YEL BOLD */ printf(YEL_BOLD"This line will be print out with color yellow and font bold.\n"RESET); //* GRN BOLD */ printf(GRN_BOLD"This line will be print out with color green and font bold.\n"RESET); //* CYAN BOLD */ printf(CYAN_BOLD_ITALIC"This line will be print out with color cyan, font bold and italic.\n"RESET); return 0; }
執行結果
我們可以看到成功變色啦!記得如果顏色改變之後如果沒有把顏色做RESET,直到有程式輸出RESET之前都會是該顏色哦!
而RESET得逃脫碼就是 \x1b[0m 啦~~
沒有留言:
張貼留言