Respuestas:
Todos los emuladores de terminal modernos usan códigos de escape ANSI para mostrar colores y otras cosas.
No te molestes con las bibliotecas, el código es realmente simple.
Más información está aquí .
Ejemplo 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;
}
El manejo de las secuencias de color puede ser complicado y diferentes sistemas pueden usar diferentes Indicadores de secuencia de color.
Te sugiero que intentes usar ncurses . Además del color, ncurses puede hacer muchas otras cosas interesantes con la interfaz de usuario de la consola.
Puede generar códigos de control de color especiales para obtener una salida de terminal de color, aquí hay un buen recurso sobre cómo imprimir colores .
Por ejemplo:
printf("\033[22;34mHello, world!\033[0m"); // shows a blue hello world
EDITAR: Mi original usaba códigos de color de solicitud, que no funciona :( Este sí (lo probé).
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~
Nada más que un montón de errores de compilación :(
22
por 1
lo vea en negrita .
Puede asignar un color a cada funcionalidad para que sea más útil.
#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");
}
Del mismo modo, puede seleccionar diferentes códigos de color y hacer que esto sea más genérico.
Porque no puedes imprimir un personaje con formateo de cadena. También puede pensar en agregar un formato con algo como esto
#define PRINTC(c,f,s) printf ("\033[%dm" f "\033[0m", 30 + c, s)
f
es formato como en printf
PRINTC (4, "%s\n", "bar")
imprimirá blue bar
PRINTC (1, "%d", 'a')
imprimirá 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;
}
leyendo Wikipedia :