Jawaban:
Semua emulator terminal modern menggunakan kode pelarian ANSI untuk menunjukkan warna dan hal lainnya.
Jangan repot-repot dengan perpustakaan, kodenya sangat sederhana.
Info lebih lanjut ada di sini .
Contoh dalam 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;
}
Berurusan dengan urutan warna dapat menjadi berantakan dan sistem yang berbeda mungkin menggunakan Indikator Urutan Warna yang berbeda.
Saya sarankan Anda mencoba menggunakan ncurses . Selain warna, ncurses dapat melakukan banyak hal lain dengan UI konsol.
Anda dapat menampilkan kode kontrol warna khusus untuk mendapatkan keluaran terminal berwarna, berikut adalah sumber yang bagus tentang cara mencetak warna .
Sebagai contoh:
printf("\033[22;34mHello, world!\033[0m"); // shows a blue hello world
EDIT: Asli saya menggunakan kode warna prompt, yang tidak berfungsi :( Yang ini tidak (saya mengujinya).
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~
Tidak lebih dari banyak kesalahan kompilasi :(
22
dengan 1
melihatnya dalam huruf tebal .
Anda dapat menetapkan satu warna untuk setiap fungsi agar lebih bermanfaat.
#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");
}
Seperti bijaksana Anda dapat memilih kode warna yang berbeda dan membuatnya lebih generik.
Karena Anda tidak dapat mencetak karakter dengan pemformatan string. Anda juga dapat memikirkan untuk menambahkan format dengan sesuatu seperti ini
#define PRINTC(c,f,s) printf ("\033[%dm" f "\033[0m", 30 + c, s)
f
format seperti dalam printf
PRINTC (4, "%s\n", "bar")
akan dicetak blue bar
PRINTC (1, "%d", 'a')
akan dicetak 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;
}
membaca Wikipedia :