在printf中创建一些文本显示为绿色和红色

linux gcc 4.4.1

我有以下fprintf语句,我希望OK为绿色,FAILED为红色。 这可能吗?

if(devh == -1) { fprintf(stderr, "Device [ FAILED ]\n"); } else { fprintf(stderr, "Device [ OK ]\n"); } 

非常感谢任何建议,

你应该使用一些像ncurses这样的库来处理终端。

或者,在Linux下,您可以使用一些控制台转义序列,例如:

 printf ("\033[32;1m OK \033[0m\n"); 

(在这种情况下,32代表绿色),但既不便携也不优雅。

我用以下的宏来为终端输出添加颜色。

 #define RESET "\033[0m" #define BLACK "\033[30m" /* Black */ #define RED "\033[31m" /* Red */ #define GREEN "\033[32m" /* Green */ #define YELLOW "\033[33m" /* Yellow */ #define BLUE "\033[34m" /* Blue */ #define MAGENTA "\033[35m" /* Magenta */ #define CYAN "\033[36m" /* Cyan */ #define WHITE "\033[37m" /* White */ #define BOLDBLACK "\033[1m\033[30m" /* Bold Black */ #define BOLDRED "\033[1m\033[31m" /* Bold Red */ #define BOLDGREEN "\033[1m\033[32m" /* Bold Green */ #define BOLDYELLOW "\033[1m\033[33m" /* Bold Yellow */ #define BOLDBLUE "\033[1m\033[34m" /* Bold Blue */ #define BOLDMAGENTA "\033[1m\033[35m" /* Bold Magenta */ #define BOLDCYAN "\033[1m\033[36m" /* Bold Cyan */ #define BOLDWHITE "\033[1m\033[37m" /* Bold White */ 

……并使用像

 printf( GREEN "Here is some text\n" RESET ); 

使用示例有色grep?

并以你的例子

 if(devh == -1) { fprintf(stderr, "Device [ " RED "FAILED" RESET " ]\n"); } else { fprintf(stderr, "Device [ " GREEN "OK" RESET " ]\n"); }