PDA

Visualizza la versione completa : [C] Stampa di caratteri Unicode


ginetto79
11-01-2011, 16:10
Ciao a tutti,

sto cercando di rendere graficamente pi carino un programma che distribuisce le 52 carte da poker. Al posto dei nome delle carte (asso di cuori...) vorrei mettere numeri e simboli. Per quanto riguarda i simboli ho trovato che esistono nell'insieme dei caratteri unicode.
Cercando su google ho trovato che possibile stampare con printf questi caratteri con la sequenza di escape \x seguita dal codice esadecimale del carattere unicode.
Purtroppo, se ci provo mi accetta solo codice a due cifre, che dovrebbe corrispondere all'insieme dei caratteri ASCII, giusto?
La mia piattaforma Linux ubuntu.

Grazie mille!

MItaly
11-01-2011, 16:14
Su Linux in genere li puoi includere direttamente nei sorgenti, assicurandoti di salvarli in UTF-8.

lolide
11-01-2011, 20:09
#include <wchar.h>
...
wchar_t ch = 0x0000;

printf("%lc", ch); // per stampare un'array unicode usa %ls

ginetto79
13-01-2011, 18:19
Il

#include <stdio.h>

#include <wchar.h>

int main()
{
wchar_t ch = 0x2660;
printf("%lc\n", ch);
return 0;
}

non produce nessun errore di compilazione, ma nemmeno nessun risultato nel terminale. :confused:

ginetto79
13-01-2011, 18:26
Originariamente inviato da MItaly
Su Linux in genere li puoi includere direttamente nei sorgenti, assicurandoti di salvarli in UTF-8.

Gedit mi salva i file in UTF-8 di default. Come faccio ad usare questi caratteri? Con il loro codice esadecimale? Come faccio a specificare che si tratta di un carattere unicode anzich una sequenza alfa-numerica?

ginetto79
13-01-2011, 18:33
Anche il codice presente su http://en.wikipedia.org/wiki/Wide_character non da risultati.



#include <stdio.h>

#include <wchar.h>
#include <wctype.h>

int main()
{

wchar_t myChar1 = L'Ω';
wchar_t myChar2 = 0x2126; // hexadecimal encoding of char Ω using UTF-16
wchar_t myString1[] = L"♠♣♥♦";
wchar_t myString2[] = { 0x2660, 0x2661, 0x2662, 0x2663, 0x0000 }; // hex encoding of null-terminated string ♠♣♥♦ using UTF-16

printf("This is a long string: %ls \n",myString1);
wprintf(L"This is a long string: %s \n",myString2);


return 0;
}

Avevo anche trovato che bisognava usare la seguenza di escape /x seguita dal codice esadecimale a quattro cifre, ma nulla!

Mi sto perdendo... :dh:

Loading