ccolorsstdiolibc

stdlib and colored output in C


I am making a simple application which requires colored output. How can I make my output colored like emacs and bash do?

I don't care about Windows, as my application is only for UNIX systems.


Solution

  • All modern terminal emulators use ANSI escape codes to show colours and other things.
    Don't bother with libraries, the code is really simple.

    More info is here.

    Example in C:

    #include <stdio.h>
    
    #define ANSI_COLOR_RED     "\x1b[31m"
    #define ANSI_COLOR_GREEN   "\x1b[32m"
    #define ANSI_COLOR_YELLOW  "\x1b[33m"
    #define ANSI_COLOR_BLUE    "\x1b[34m"
    #define ANSI_COLOR_MAGENTA "\x1b[35m"
    #define ANSI_COLOR_CYAN    "\x1b[36m"
    #define ANSI_COLOR_RESET   "\x1b[0m"
    
    int main (int argc, char const *argv[]) {
    
      printf(ANSI_COLOR_RED     "This text is RED!"     ANSI_COLOR_RESET "\n");
      printf(ANSI_COLOR_GREEN   "This text is GREEN!"   ANSI_COLOR_RESET "\n");
      printf(ANSI_COLOR_YELLOW  "This text is YELLOW!"  ANSI_COLOR_RESET "\n");
      printf(ANSI_COLOR_BLUE    "This text is BLUE!"    ANSI_COLOR_RESET "\n");
      printf(ANSI_COLOR_MAGENTA "This text is MAGENTA!" ANSI_COLOR_RESET "\n");
      printf(ANSI_COLOR_CYAN    "This text is CYAN!"    ANSI_COLOR_RESET "\n");
    
      return 0;
    }