Making some text in printf appear in green and red

后端 未结 2 575
离开以前
离开以前 2020-12-22 20:11

linux gcc 4.4.1

I have the following fprintf statement and I would like to have the OK as green and the FAILED as red. Is this possible?

if(devh == -         


        
相关标签:
2条回答
  • 2020-12-22 20:36

    I use to use the following macros to add color to terminal output.

    #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 */
    

    ...and use like

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

    Example of use Colored grep?

    And for your example

    if(devh == -1)
    {
        fprintf(stderr, "Device [ " RED "FAILED" RESET " ]\n");
    }
    else
    {
        fprintf(stderr, "Device [ " GREEN "OK" RESET " ]\n");
    }
    
    0 讨论(0)
  • 2020-12-22 20:55

    You should probably use some library such as ncurses to handle terminal.

    Alternatively, under Linux you could use some console escape sequences such as:

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

    (in this case 32 stands for green), but it is neither portable nor elegant.

    0 讨论(0)
提交回复
热议问题