2017-11-11 2 views
0

I farbigem Text mit C. Hier ist mein Code drucken mag:Wie der Wert einer Variable in der Farbe drucken rot mit 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() 
{ 
    char *string = "Test"; 

    printf("%s", ANSI_COLOR_RED  string  ANSI_COLOR_RESET); 

    return 0; 
} 

Wenn diese kompiliert wird, wird ein Fehler ausgegeben:

game.c:18:35: error: expected ‘)’ before ‘string’ 
printf("%s", ANSI_COLOR_RED  string  ANSI_COLOR_RESET); 

Wie behebe ich diesen Fehler?

+0

Sie Stringliterale verketten (3 in der Antwort, wie in Option) sein würde, aber Sie eine wörtliche mit einer variablen verketten können, wie Sie versuchen, machen. –

Antwort

4
printf ("\033[31;1m Red dragon \033[0m\n"); 

Dies ist der Weg zu tun.

Auch ein besserer Weg wäre es zu tun ANSI -way, mit dem Makro.

printf ("%s%s%s\n", ANSI_COLOR_RED, string, ANSI_COLOR_RESET); 

Ein weiterer Weg zu gehen darüber

printf (ANSI_COLOR_RED "%s\n" ANSI_COLOR_RESET, string); 
+1

Oder, besser, 'printf ("% s% s% s \ n ", ANSI_COLOR_RED, string, ANSI_COLOR_RESET);' – AlexP

+0

@AlexP .: Ja ... noch besser. – coderredoc

+0

Oder sogar 'printf (ANSI_COLOR_RED"% s \ n "ANSI_COLOR_RESET, string);' ':)' –

Verwandte Themen