Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: C: Väritetyn tekstin tulostus

fergusq [06.12.2013 13:13:54]

#

Kun ohjelma tulostaa tekstiä, se on yleensä väritöntä, mutta riippuen pääte-emulaattorista joitain muotoiluja saatetaan tukea.

ANSI-ohjauskoodit ovat ainakin Linuxissa useimmiten tuettuja, mutta esim. Windowsin komentokehoite ei niitä tue. Ohjauskoodi näyttää seuraavalta:

\x1b[<tehosteet>m

\x1b eli merkki nro. 27 aloittaa koodin. Tehosteet erotetaan puolipisteillä (;). Tehoste on joko 0 (ei tehostetta), 1 (lihavoitus), 4 (alleviivaus), 7 (edusta- ja taustavärit vaihdettu) tai väri. Värit voi tarkistaa seuraavasta taulukosta:

VäriEdustavärikoodiTaustavärikoodi
Musta3040
Punainen3141
Vihreä3242
Keltainen3343
Sininen3444
Magenta3545
Syaani3646
Valkoinen3747

Kaikki tehosteet resetoidaan ohjauskoodilla \x1b[0m.

// "Esimerkki" lihavoitu, alleviivattu, punainen
printf("\x1b[1;4;31mEsimerkki\x1b[0m\n");

// "Esimerkki" valkoista sinisellä
printf("\x1b[37;44mEsimerkki\x1b[0m\n");

// "Esi" lihavoitu, keltainen; "merkki" värit käännetty
printf("\x1b[1;33mEsi\x1b[7mmerkki\x1b[0m\n");

Hengilö [10.01.2014 16:59:55]

#

Tuo tapa ei ainakaan toimi Windowsissa omien kokeilujeni mukaan. C++:n sivuilta löysin kuitenkin tällaisen WinAPI:a käyttävän sydeemin. Siinä ei kuitenkaan ole lihavointia ja kursiivia.

Metabolix [10.01.2014 17:10:07]

#

Vinkissä olisi tosiaan hyvä mainita, että ANSI-ohjauskoodit eivät toimi Windowsin tavallisella komentorivillä.

Jos oikeasti haluaa tulostaa väritettyä tekstiä, kannattaa yleensä käyttää valmista kirjastoa, joita ovat ncurses ja PDCurses.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta