2015-04-01 23 views
6

La nota Colorful text using printf in C fornisce un buon esempio di impostazione del testo colorato sull'output della console standard in Windows. C'è qualcosa di simile che consente di sottolineare l'output? O forse anche in grassetto o in corsivo?Come sottolineare il testo utilizzando printf in C

EDIT: Ho provato la risposta di Lundin sull'utilizzo di COMMON_LVB_UNDERSCORE senza fortuna. Tentativo di utilizzare AddFontResource() per aggiungere il carattere arial italic per provare il corsivo dà un errore che c'è un undefined reference to __imp_AddFontResourceA

risposta

2

Non è possibile farlo utilizzando le funzioni C standard, poiché il linguaggio C non riconosce nemmeno la presenza di uno schermo.

Con Windows API console functions è possibile modificare i colori, sottolineare e alcune altre cose. La particolare funzione che stai cercando si chiama SetConsoleTextAttribute proprio come nel post che hai collegato. Cambiare il suo attributes per includere COMMON_LVB_UNDERSCORE.

+0

Nessuna fortuna con quella sul mio sistema win7, con l'opzione attivata, tutte le printf () i caratteri di stringa sono stampati come spazi, eccetto le nuove righe :( – Toby

+1

@Toby Hmm, a quanto pare. Sono passati dall'età in cui ho usato queste funzioni. Farò qualche ricerca, vediamo se riesco a scoprire perché: – Lundin

+1

Il 'COMMON_LVB_ * Gli attributi sono usati solo per ['CHAR_INFO'] (https : //msdn.microsoft.com/en-us/library/windows/desktop/ms682013%28v=vs.85%29.aspx) attributi quando la console utilizza una [codepage DBCS] (https://msdn.microsoft .com/it-it/library/windows/desktop/dd317794% 28v = vs.85% 29.aspx). – eryksun

2

È possibile eseguire il programma in un ambiente con un terminale che accetta ANSI escape codes.

(non ho mai usato Windows - dal momento che sto usando solo Linux -, quindi non so come impostare tale ambiente in Windows, ma ho sentito che è possibile)

Con ANSI fuga codici, la sottolineatura è "\e[4m" con \e come carattere ESCII ESCII.

Problemi correlati