PDA

View Full Version : colore testo della console in C


71104
21-06-2006, 11:41
hola,
con la printf standardissima è possibile in C settare gli attributi del testo (colore e colore di sfondo)? me l'ha chiesto un amico e io gli ho detto "al 95% no, ma non sono sicuro, chiederò su HWU" :p

thx

VICIUS
21-06-2006, 11:52
Qui su linux funziona:
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
printf("\e[1;33mMa Che bello l'output colorato!\e[0m");
return 0;
}

ciao ;)

mynos79
21-06-2006, 12:00
Quella sintassi va bene per Linux (magico Tux :p) ...

Per win, io ho spulciato tempo fa questa guida in italiano:
http://www.pierotofy.it/pages/appunti/CPlusPlus/Colori_nella_console_con_CPlusPlus/
Ma vengono usate le api.

andbin
21-06-2006, 12:02
In Windows invece non vanno i colori, stampa semplicemente la stringa così com è :DÈ vero. Ma, almeno una volta quando c'era ancora il MS-DOS, era fattibile a patto di aver caricato un ANSI.SYS, se ben ricordo.

mynos79
21-06-2006, 12:07
È vero. Ma, almeno una volta quando c'era ancora il MS-DOS, era fattibile a patto di aver caricato un ANSI.SYS, se ben ricordo.

Si ... una volta però :) ora con win per forza (che sappia io) bisogna appoggiarsi a delle api.
Win tra api e buchi è una sorta di alveare ;)

71104
21-06-2006, 12:44
ma il modo esposto da VICIUS per cambiare il colore del testo rientra nello standard...? :mbe:
per es. funzionerebbe anche su Mac?

trallallero
21-06-2006, 15:48
ma il modo esposto da VICIUS per cambiare il colore del testo rientra nello standard...? :mbe:
per es. funzionerebbe anche su Mac?

Non penso.
Ti posso solo dire che su Sun non funziona.
Penso che le "escape sequence" siano relative al SO ;)

andbin
21-06-2006, 16:10
Occhio solo a una cosa ... VICIUS ha messo \e ma bisogna mettere \033.

VICIUS
21-06-2006, 18:05
Occhio solo a una cosa ... VICIUS ha messo \e ma bisogna mettere \033.
Oops mi è scappato un'altro maledetto bash-ism. :D

ciao ;)

The3DProgrammer
21-06-2006, 18:57
affrontai questo problema un paio di anni fa, l'unico modo che trovai sotto win è con le API (FillConsoleOutputAttributes, SetConsoleTextAttributes se nn ricordo male). Con la printf nn so, ma nn credo.

ciauz

71104
22-06-2006, 01:49
grazie a tutti, riferirò all'amico; forse userà la compilazione condizionale ^^

hola