Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

[C linux] come posso stampare caratteri colorati?

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

[C linux] come posso stampare caratteri colorati?

Messaggioda Shagrath » mar mag 09, 2006 3:37 pm

Ciao a tutti,
avrei bisogno di qualcosa per stampare l'output su riga di comando, con il C su linux, con colori diversi da quello di default.
Conosco molto basilarmente le librerie ncurses, potrebbero andar bene se non fosse che la dimensione della finestra è finita, non pseudo-infinita come in una normale shell, nella quale posso vedere l'output fuori schermo scorrendo la barra verticale...
Potete dirmi se c'è un alternativa alle ncurses o se il problema delle dimensioni dello schermo può essere sistemato?

Grazie!
C'è sempre una soluzione...
Avatar utente
Shagrath
Senior Member
Senior Member
 
Messaggi: 261
Iscritto il: mar mar 29, 2005 8:54 pm

Messaggioda Shagrath » mer mag 10, 2006 11:07 am

Ok, ce l'ho fatta, ho trovato una soluzione. Posto i risultati, magari possono servire a qualcun'altro.

Ho abbandonato la ncurses poichè non ho trovato un sistema per dare allo schermo (che viene considerato come una finestra dalle ncurses) una dimesione progressiva in altezza.
Ho invece trovato una soluzione più comoda e facile da usare che può essere integrata nella printf().
Basta inserire uno di questi caratteri speciali nella stringa da stampare sullo STD_OUT:

    rgb_restore='\[\033[00m\]' // rimette il colore di default
    rgb_black='\[\033[00;30m\]'
    rgb_firebrick='\[\033[00;31m\]'
    rgb_red='\[\033[01;31m\]'
    rgb_yellow='\[\033[01;33m\]'
    rgb_forest='\[\033[00;32m\]'
    rgb_green='\[\033[01;32m\]'
    rgb_brown='\[\033[00;33m\]'
    rgb_navy='\[\033[00;34m\]'
    rgb_blue='\[\033[01;34m\]'
    rgb_purple='\[\033[00;35m\]'
    rgb_magenta='\[\033[01;35m\]'
    rgb_cadet='\[\033[00;36m\]'
    rgb_cyan='\[\033[01;36m\]'
    rgb_gray='\[\033[00;37m\]'
    rgb_white='\[\033[01;37m\]'


ecco come vanno inseriti nella printf:
Codice: Seleziona tutto
printf( "\033[01;33mCiao\n" );

Insomma, dovete omettere i due gruppi di carratteri '\[ e \]'
Attenzione però, una volta che uno di questi carratteri viene stampato a schermo, viene cambiato il colore che la shell usa per stampare a video! Quindi, anche se il vostro programma avrà terminato di eseguire, la shell continuerà, come nel nostro caso, a stampare giallo...
Per evitare che ciò avvenga, ricordatevi di stampare il carattere rgb_restore prima della fine del vs programma:
Codice: Seleziona tutto
printf( "\033[01;33mCiao\033[00m\n" );

Così sarà stampato solo un "Ciao" giallo e subito dopo sarà reimpostato il colore di default della shell.
C'è sempre una soluzione...
Avatar utente
Shagrath
Senior Member
Senior Member
 
Messaggi: 261
Iscritto il: mar mar 29, 2005 8:54 pm


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising