Au minimum, il fait que tes caractères soient déclarés 'unsigned char', sinon ils risquent d'être pris pour des 'signés', ce qui pourrait faire perdre du sens à tout caractère au dessus de 127 en code ASCII. Je parle en termes de portabilité sous les Unixes... Sous Linux x86, les 'char' signés perdent effectivement leur sens, 'é' devient '-87'.
Il est possible aussi que l'internationalisation de ton éditeur de texte ne soit pas dans les mêmes normes que ta ligne de commande ou le mode graphique de ton programme !
cat Accents.c
devrait être révélateur : si tu ne vois pas les accents pareils que sous l'éditeur, t'as trouvé une vache de cause de perte de temps.
Attention les warnings "constante caractère multi-caractères" devraient être étudiés de près en environnement professionnel. Pour un TP, il y a matière à discuter avec tes profs sur ce vaste sujet de l'internationalisation...
Après pour aller plus loin, comme déjà signalé, mbrtowc()
et wcrtomb() et le type wchar_t (wide character), ça c'est le top... Il y a de quoi faire.
# unsigned char
Posté par tguez . En réponse au message Gestion des accents et caractères bien français !. Évalué à 2.
Il est possible aussi que l'internationalisation de ton éditeur de texte ne soit pas dans les mêmes normes que ta ligne de commande ou le mode graphique de ton programme !
cat Accents.c
devrait être révélateur : si tu ne vois pas les accents pareils que sous l'éditeur, t'as trouvé une vache de cause de perte de temps.
Sous Linux :
$ cat Accents.c
#include <stdio.h>
main()
{
unsigned char lettre = (unsigned char)'é' ;
printf("lettre numéro %d\n", (int)lettre) ;
if (lettre == (unsigned char)'é') {
printf("Lettre accentuée détectée...\n") ;
lettre = 'e';
}
printf("lettre numéro %d\n", (int)lettre) ;
return(0) ;
}
$ gcc Accents.c
Accents.c:5:40: attention : constante caractère multi-caractères
Accents.c:9:31: attention : constante caractère multi-caractères
$ ./a.out
lettre numéro 169
Lettre accentuée détectée...
lettre numéro 101
Attention les warnings "constante caractère multi-caractères" devraient être étudiés de près en environnement professionnel. Pour un TP, il y a matière à discuter avec tes profs sur ce vaste sujet de l'internationalisation...
Après pour aller plus loin, comme déjà signalé, mbrtowc()
et wcrtomb() et le type wchar_t (wide character), ça c'est le top... Il y a de quoi faire.