Cómo imprimir varios colores de texto en la consola usando C

En Linux usarías la biblioteca ncurses. El enlace lo lleva a una lista de tutoriales sobre él.

En Windows, hay una biblioteca ncurses llamada PDCurses que emula la API ncurses.

Una muestra de uno de los tutoriales básicos:

#include

void print_in_middle (VENTANA * win, int starty, int startx, int width, char * string);
int main (int argc, char * argv [])
{initscr (); / * Iniciar modo maldiciones * /
if (has_colors () == FALSO)
{endwin ();
printf (“Su terminal no admite color \ n”);
salida (1);
}
start_color (); / * Color de inicio * /
par_inicial (1, COLOR_RED, COLOR_BLACK);

attron (COLOR_PAIR (1));
print_in_middle (stdscr, LINES / 2, 0, 0, “Viola !!! In color …”);
attroff (COLOR_PAIR (1));
getch ();
endwin ();
}
void print_in_middle (WINDOW * win, int starty, int startx, int width, char * string)
{int longitud, x, y;
temperatura de flotación;

if (win == NULL)
win = stdscr;
getyx (win, y, x);
if (iniciox! = 0)
x = iniciox;
if (¡inicial! = 0)
y = sobresalto;
si (ancho == 0)
ancho = 80;

longitud = strlen (cadena);
temp = (ancho – largo) / 2;
x = iniciox + (int) temp;
mvwprintw (win, y, x, “% s”, cadena);
actualizar();
}

Estoy usando C ++, ese mismo lenguaje C. Puedes ver :

#include

#include

//setColor

using namespace std;

int main() {

HANDLE hConsoleColor;

hConsoleColor = GetStdHandle(STD_OUTPUT_HANDLE);

for(int k=0;k<=255;k++) {

SetConsoleTextAttribute(hConsoleColor, k);

cout << k << " - Change color! ";

if (k%3==0) cout << endl;

}

return 0;

}

Alternativamente, en C y tal vez incluso en C ++, podría usar códigos de color ANSI como este:

#define ANSI_RED “\ x1b [31m”
#define ANSI_GREEN “\ x1b [32m”
#define ANSI_YELLOW “\ x1b [33m”
#define ANSI_BLUE “\ x1b [34m”
#define ANSI_MAGENTA “\ x1b [35m”
#define ANSI_CYAN “\ x1b [36m”
#define ANSI_RESET “\ x1b [0m”

printf (ANSI_RED “texto rojo” ANSI_GREEN “texto verde” ANSI_BLUE “texto azul” ANSI_RESET “texto predeterminado \ n”);

Tenga en cuenta que no todos los terminales / consolas pueden admitirlos, pero la mayoría de ellos deberían. Sin embargo, definitivamente es la opción más ligera aquí.

Usted pregunta: ¿Cómo imprimo varios colores de texto en la consola usando C?

Solo tiene que suponer que el emulador de terminal que muestra la salida de su programa C comprende algunas secuencias especiales de caracteres que hacen que cambie el color de los caracteres mostrados a partir de ese momento.

La mayoría de los emuladores de terminal actuales admiten al menos algunos de los códigos de escape ANSI que le permiten controlar varios aspectos de cómo se muestra la salida de caracteres, incluida la configuración del color de salida.

O genera esas secuencias directamente, esperando lo mejor, o utiliza alguna biblioteca común (pero no estándar) como ncurses (en sistemas UNIX y UNIX) que sabe cómo manejar la situación para varios tipos de terminales (y terminales emuladores).

Inútil decir que el estándar C no dice nada al respecto.