Réponses:
Tous les émulateurs de terminal modernes utilisent des codes d'échappement ANSI pour afficher les couleurs et d'autres choses.
Ne vous embêtez pas avec les bibliothèques, le code est vraiment simple.
Plus d'informations ici .
Exemple en 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;
}
La gestion des séquences de couleurs peut devenir désordonnée et différents systèmes peuvent utiliser différents indicateurs de séquence de couleurs.
Je vous suggère d'essayer d'utiliser ncurses . Outre la couleur, ncurses peut faire beaucoup d'autres choses intéressantes avec l'interface utilisateur de la console.
Vous pouvez générer des codes de contrôle de couleur spéciaux pour obtenir une sortie de terminal colorée, voici une bonne ressource sur la façon d'imprimer les couleurs .
Par exemple:
printf("\033[22;34mHello, world!\033[0m"); // shows a blue hello world
EDIT: Mon original utilisait des codes de couleur d'invite, ce qui ne fonctionne pas: (Celui-ci le fait (je l'ai testé).
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~
Rien de plus qu'un tas d'erreurs de compilation :(
22
par 1
pour le voir en gras .
Vous pouvez attribuer une couleur à chaque fonctionnalité pour la rendre plus utile.
#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");
}
De même, vous pouvez sélectionner différents codes de couleur et rendre cela plus générique.
Parce que vous ne pouvez pas imprimer un caractère avec un formatage de chaîne. Vous pouvez également penser à ajouter un format avec quelque chose comme ça
#define PRINTC(c,f,s) printf ("\033[%dm" f "\033[0m", 30 + c, s)
f
est le format comme dans printf
PRINTC (4, "%s\n", "bar")
va imprimer blue bar
PRINTC (1, "%d", 'a')
va imprimer 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;
}
lecture de Wikipedia :