stdlib pause dev comandos c colors std stdio

pause - stdlib y salida coloreada en C



system pause c++ (6)

Estoy haciendo una aplicación simple que requiere salida de color. ¿Cómo puedo hacer que mi salida se coloree como emacs y bash do?

No me importa Windows, ya que mi aplicación es solo para sistemas UNIX.


Porque no puedes imprimir un personaje con formato de cuerda. 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 el formato como en printf

PRINTC (4, "%s/n", "bar")

imprimirá blue bar

PRINTC (1, "%d", ''a'')

imprimirá red 97


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"); }

De la misma manera, puedes seleccionar códigos de colores diferentes y hacer esto más genérico.


Puede generar códigos de control de color especiales para obtener una salida de terminal coloreada, 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 utilizaba códigos de colores de solicitud, lo cual no funciona :( Este sí (lo probé).


Si usa el mismo color para todo el programa, puede definir la printf() .

#include<stdio.h> #define ah_red "/e[31m" #define printf(X) printf(ah_red "%s",X); #int main() { printf("Bangladesh"); printf("/n"); return 0; }


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á here .

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; }


Tratar con las secuencias de color puede ser complicado y los diferentes sistemas pueden usar diferentes Indicadores de Secuencia de Color.

Sugeriría que intentes usar ncurses . Además del color, ncurses puede hacer muchas otras cosas ordenadas con la interfaz de usuario de la consola.