By feeding some magic characters to printf, you can manipulate your fore color, background color and even attributes. Lets look at a simple example to print “Hello World” in Bright Red with background black.
#define BRIGHT 1 #define RED 31 #define BG_BLACK 40 printf("%c[%d;%d;%dmHello World", 0x1B, BRIGHT,RED,BG_BLACK); Okay, the code above print the string with bright red but the color setting will remain, to reset back the color to default, refers the code as bellow:
printf("%c[%dm", 0x1B, 0); The fore color, background color and attributes codes are shown as bellow
How’s the color magic works? 0×1B is a special code that used to do all the color settings. 0×1B is hex code equivalent to decimal 27. With character(27) and a open square blacket “[”, initiate the setting. The rest of the values are (attribute);(fore color);(background color) and it ends the setting with ” m “. So entire thing will be look like this:
printf("%c[%d;%d;%dm",27,1,33,40);With that the rest of your print line will be in bright yellow with background color black.
I have transparent background, What if I want my default background instead of any color?
Simple, ignore the background color, How?
printf("%c[%d;%dmHello World%c[%dm\n",27,1,33,27,0);The line above will print bright yellow “Hello World” with default bg color.