Sì, anche se il supporto a seconda della piattaforma è più o meno decente (e soprattutto, su Windows si tende ad usare wchar_t/UTF-16, su Linux char/UTF-8).Originariamente inviato da fdoubledd
ma con il C si puo usare unicode?
Esempio:
(su Linux va, dovrebbe andare anche su Windows)codice:#include <wchar.h> #include <stdio.h> #include <locale.h> /* * Definisce un'enumerazione con i tipi di pezzi * Nota: l'ordine è importante, è lo stesso con cui compaiono * i corrispondenti caratteri Unicode */ enum ChessPiecesT { King, Queen, Rock, Bishop, Knight, Pawn, }; enum PlayerT { White=0x2654, /* codice del carattere re bianco */ Black=0x265a, /* codice del carattere re nero */ }; /* Fornisce il carattere per il pezzo desiderato */ inline wchar_t PieceChar(enum PlayerT Player, enum ChessPiecesT Piece) { /* costruisce il codice del carattere corretto sommando al codice del primo pezzo * del giocatore l'offset del carattere desiderato */ return (wchar_t)(Player + Piece); } /* Prima riga della scacchiera (per il nero) */ enum ChessPiecesT TopRow[]={Rock, Knight, Bishop, Queen, King, Bishop, Knight, Rock}; /* Stampa la prima riga della scacchiera */ void PrintTopRow(enum PlayerT Player) { int i; for(i=0; i<8; i++) putwchar(PieceChar(Player, TopRow[Player==Black?i:(7-i)])); /* se ci è stato chiesto per il bianco inverte l'ordine dei pezzi */ putwchar(L'\n'); } /* stampa gli otto pedoni */ void PrintPawns(enum PlayerT Player) { wchar_t pawnChar=PieceChar(Player, Pawn); int i; for(i=0; i<8; i++) putwchar(pawnChar); putwchar(L'\n'); } int main() { setlocale(LC_CTYPE, ""); PrintTopRow(Black); PrintPawns(Black); fputws(L"\n\n\n\n", stdout); PrintPawns(White); PrintTopRow(White); return 0; }

Rispondi quotando