標籤:c linux terminal 終端 字元顏色
我們在編寫程式的時候,通常需要終端對輸出顯示紅色或者綠色等各種顏色,以便更加清楚的對使用者做出提示。下面是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(白色)
示範原始碼:
[cpp] view plaincopyprint?
- /******************************************************************************
- Copyright by Javacode007, All rights reserved!
- Filename : setcolor.c
- Author : Javacode007
- 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);
- }
-
-
- int main()
- {
- /* 設定終端字型顯示為紅色高亮,背景色為藍色*/
- set_term_color("hello,world\r\n", "1;31;44");
-
- /* 恢複終端字型的系統預設顯示*/
- set_term_default();
- printf("hello,world\r\n");
-
- return 0;
- }
/******************************************************************************Copyright by Javacode007, All rights reserved!Filename : setcolor.cAuthor : Javacode007Date : 2012-8-5Version : 1.0Description : 設定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);}int main(){ /* 設定終端字型顯示為紅色高亮,背景色為藍色*/ set_term_color("hello,world\r\n", "1;31;44"); /* 恢複終端字型的系統預設顯示*/ set_term_default(); printf("hello,world\r\n"); return 0;}
輸出效果如下:
Linux 終端字元顏色設定