Einen Text in printf grün und rot erscheinen lassen

Lesezeit: 1 Minute

Linux gcc 4.4.1

Ich habe die folgende fprintf-Anweisung und ich möchte das OK als grün und das FAILED als rot haben. Ist das möglich?

if(devh == -1)
{
    fprintf(stderr, "Device [ FAILED ]\n");
}
else
{
    fprintf(stderr, "Device [ OK ]\n");
}

Vielen Dank für Anregungen,

Benutzeravatar von epatel
epatel

Ich verwende die folgenden Makros, um der Terminalausgabe Farbe hinzuzufügen.

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

  • Danke für die brillante Antwort

    – kapil

    20. September 2015 um 17:19 Uhr

Sie sollten wahrscheinlich eine Bibliothek wie ncurses verwenden, um mit Terminal umzugehen.

Alternativ könnten Sie unter Linux einige Konsolen-Escape-Sequenzen verwenden, wie zum Beispiel:

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

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

  • Definitely better to use the library – hardwiring terminal escape sequences is bad, and the problems associated with it are the reasons why the curses library was invented (or are a large part of the reason).

    – Jonathan Leffler

    Dec 25, 2009 at 20:29

1402780cookie-checkEinen Text in printf grün und rot erscheinen lassen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy