Tworzę prostą aplikację, która wymaga kolorowego wydruku. Jak mogę sprawić, by moje wyjście było kolorowe, tak jak robią to emacs i bash?
Nie obchodzi mnie Windows, ponieważ moja aplikacja jest przeznaczona tylko dla systemów UNIX.
Wszystkie nowoczesne emulatory terminali używają kodów ucieczki ANSI, aby pokazać kolory i inne rzeczy.
Nie przejmuj się bibliotekami, kod jest naprawdę prosty.
Więcej informacji tutaj .
Przykład w 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;
}
Radzenie sobie z sekwencjami kolorów może być skomplikowane, a różne systemy mogą używać różnych wskaźników sekwencji kolorów.
Sugerowałbym, abyś spróbował użyć ncurses . Poza kolorami, ncurses może robić wiele innych fajnych rzeczy z interfejsem konsoli.
źródło
Możesz wyprowadzić specjalne kody kontroli kolorów, aby uzyskać kolorowy wynik terminala. Oto dobre źródło informacji na temat drukowania kolorów .
Na przykład:
EDYCJA: Mój oryginalny używał kodów kolorów podpowiedzi, które nie działają :( Ten działa (testowałem to).
źródło
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~
Nic więcej niż kilka błędów kompilacji :(22
,1
aby zobaczyć to pogrubioną czcionką .Możesz przypisać jeden kolor do każdej funkcji, aby była bardziej użyteczna.
Podobnie jak mądrze, możesz wybrać różne kody kolorów i uczynić to bardziej ogólnym.
źródło
Jeśli używasz tego samego koloru dla całego programu, możesz zdefiniować
printf()
funkcję.źródło
Ponieważ nie możesz wydrukować znaku z formatowaniem ciągu. Możesz także pomyśleć o dodaniu formatu z czymś takim
f
ma format jak wprintf
wydrukuje
blue bar
wydrukuje
red 97
źródło
czytanie Wikipedii :
źródło