ANSI Colors
We have 8 ANSI colors that we can use in our output, this can be doubled to 16 if you take into consideration that these colors can be displayed as standard or in bold for highlighting. To be able to access the colors we need to use and escape sequence followed by the correct color code, the print the text and finally reset the colors.
- printf(“\033[0;31m”); //Set the text to the color red
- printf(“Hello\n”); //Display Hello in red
- printf(“\033[0m”); //Resets the text to default color
- Escape is: \033
- Color code is: [0;31m
It is important to reset the color to ensuring that the selected color is terminated and text returns to normal. Using the following table you can view some of the code available.
CODE | COLOR |
---|---|
[0;31m | Red |
[1;31m | Bold Red |
[0;32m | Green |
[1;32m | Bold Green |
[0;33m | Yellow |
[01;33m | Bold Yellow |
[0;34m | Blue |
[1;34m | Bold Blue |
[0;35m | Magenta |
[1;35m | Bold Magenta |
[0;36m | Cyan |
[1;36m | Bold Cyan |
[0m | Reset |
Simple Hello World in Color
Working with a simple hello world program we can begin to understand how to make use of the color. Firstly we will set the color to be red and bold before moving onto using functions to set the color.
#include <stdio.h> int main () { printf("\033[1;31m"); printf("Hello world\n"); printf("\033[0m;") return 0; }
Adding color to the output was really quite simple; however setting many colors or changing the colors many times will be repetitive. Setting the color often and using more than one color is going to be required where we want to highlight the output with information and warnings.
Using Functions
This is where function can help. It is simple to create functions for red, yellow etc. Let’s take a look.
#include <stdio.h> void red () { printf("\033[1;31m"); } void yellow { printf("\033[1;33m"); } void reset () { printf("\033[0m"); } int main () { red(); printf("Hello "); yellow(); printf("world\n"); reset; return 0; }
We can use the newly created functions as many time as we want and it is as simple as yellow(); reset(); or red(); We, of course, can create more functions to support all colors.
Using the functions the way we have we do not need to return any values. The functions result only in printing the ANSI color codes to the terminal. As we do not return any value then we set the output parameter explicitly to void.
Moving On
It is also likely that we can reuse these function in almost any C program that has text output. In another blog we will see how we can reuse this code by creating and referencing our own header files.
The following video steps you through the process of printing in color.