[C] Problema con caratteri accentati

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
Fantasmino
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 480
Iscrizione: giovedì 23 novembre 2006, 22:24

[C] Problema con caratteri accentati

Messaggio da Fantasmino »

Ciao a tutti!
Ho un problema con i caratteri accentati in C.
Ho creato un piccolo script:

Codice: Seleziona tutto

#include <stdio.h>

main()  {
     char ch;

     scanf ("%c",&ch);

     if (ch=='è')
          printf ("OK\n");
     else
          printf ("NO\n");
} 
lo salvo come prova.c, poi lo compilo:

Codice: Seleziona tutto

g++ prova.c -o prova
e mi restituisce questo errore:

Codice: Seleziona tutto

prova.c:9:14: warning: multi-character character constant
prova.c: In function 'int main()':
prova.c:9: warning: comparison is always false due to limited range of data type
Infatti poi lo lancio e qualsiasi lettera io batta sulla tastiera mi restituisce NO. >:(
Ho googlato alla grande, e sono riuscito a capire che i caratteri accentati non sono visti come carattere singolo, e da qui il problema. Infatti sostituendo la è con qualsiasi altra lettera non accentata, il programma funziona perfettamente...
Come posso risolvere e fargli riconoscere anche le lettere accentate?
Il file prova.c è scritto con codifica UTF-8 (ma ho provato anche ISO-8859-1 e ISO-8859-15 senza risultato), lavoro con hardy 64bit (ho anche provato con 32bit e medesimo errore).
Qualcuno sa darmi una mano?
...fatti non foste a viver come bruti, ma per seguir virtute e canoscenza...
Avatar utente
moretto11
Prode Principiante
Messaggi: 217
Iscrizione: venerdì 20 aprile 2007, 16:33
Contatti:

Re: [C] Problema con caratteri accentati

Messaggio da moretto11 »

ti sei già risposto da solo. dato che i caratteri accentati sono in realtà 2 caratteri, nn riuscirai a fare un confronto. dovresti probabilmente usare le stringhe, ad esempio così:

Codice: Seleziona tutto

#include <stdio.h>
#include <string.h>

int main(){
	char s[3];
	scanf("%s",s);
	if(strcmp(s,"è")==0)
		printf("OK!\n");
	else
		printf("NO!\n");
	return 0;
}
Avatar utente
Fantasmino
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 480
Iscrizione: giovedì 23 novembre 2006, 22:24

Re: [C] Problema con caratteri accentati

Messaggio da Fantasmino »

Grande! :-*
In effetti ora funziona perfettamente!
Questo era un test per verificare questa cosa, parte di un problema più grosso, ora ci studio su e magari mi faccio risentire...
Grazie!
...fatti non foste a viver come bruti, ma per seguir virtute e canoscenza...
Avatar utente
moretto11
Prode Principiante
Messaggi: 217
Iscrizione: venerdì 20 aprile 2007, 16:33
Contatti:

Re: [C] Problema con caratteri accentati

Messaggio da moretto11 »

ok, se hai bisogno chiedi!
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti