在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"); }