Antworten:
Alle modernen Terminalemulatoren verwenden ANSI-Escape-Codes, um Farben und andere Dinge anzuzeigen.
Kümmere dich nicht um Bibliotheken, der Code ist wirklich einfach.
Weitere Infos gibt es hier .
Beispiel 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;
}
Der Umgang mit Farbsequenzen kann unübersichtlich werden und verschiedene Systeme verwenden möglicherweise unterschiedliche Farbsequenzindikatoren.
Ich würde vorschlagen, dass Sie versuchen, ncurses zu verwenden . Abgesehen von der Farbe können ncurses mit der Benutzeroberfläche der Konsole viele andere nette Dinge tun.
Sie können spezielle Farbsteuerungscodes ausgeben, um eine farbige Terminalausgabe zu erhalten. Hier finden Sie eine gute Ressource zum Drucken von Farben .
Beispielsweise:
printf("\033[22;34mHello, world!\033[0m"); // shows a blue hello world
BEARBEITEN: Mein Original verwendete sofortige Farbcodes, was nicht funktioniert :( Dieser funktioniert (ich habe es getestet).
edition.c: In function ‘int main(int, const char**)’: edition.c:4: error: unknown escape sequence '\]' edition.c:4: error: unknown escape sequence '\]' edition.c edition.c~
Nichts weiter als eine Reihe von Kompilierungsfehlern :(
22
von 1
es in sehen fett .
Sie können jeder Funktionalität eine Farbe zuweisen, um sie nützlicher zu machen.
#define Color_Red "\33[0:31m\\]" // Color Start
#define Color_end "\33[0m\\]" // To flush out prev settings
#define LOG_RED(X) printf("%s %s %s",Color_Red,X,Color_end)
foo()
{
LOG_RED("This is in Red Color");
}
Ebenso können Sie verschiedene Farbcodes auswählen und diese allgemeiner gestalten.
Weil Sie kein Zeichen mit Zeichenfolgenformatierung drucken können. Sie können auch daran denken, ein Format mit so etwas hinzuzufügen
#define PRINTC(c,f,s) printf ("\033[%dm" f "\033[0m", 30 + c, s)
f
ist Format wie in printf
PRINTC (4, "%s\n", "bar")
wird gedruckt blue bar
PRINTC (1, "%d", 'a')
wird gedruckt red 97
#include <stdio.h>
#define BLUE(string) "\x1b[34m" string "\x1b[0m"
#define RED(string) "\x1b[31m" string "\x1b[0m"
int main(void)
{
printf("this is " RED("red") "!\n");
// a somewhat more complex ...
printf("this is " BLUE("%s") "!\n","blue");
return 0;
}
Wikipedia lesen :