salut à tous.
#include <stdio.h>
int main(void){
char t[]="éçà";
printf("éçà\n");
printf("%s\n", t);
printf("%c\n", t[1]);
return 0;
}
éçà
éçà
�
quelqu'un pourrait m'expliquer ?
je suis preneur d'un lien aussi.
merci.
salut à tous.
#include <stdio.h>
int main(void){
char t[]="éçà";
printf("éçà\n");
printf("%s\n", t);
printf("%c\n", t[1]);
return 0;
}
éçà
éçà
�
quelqu'un pourrait m'expliquer ?
je suis preneur d'un lien aussi.
merci.
# Encodage du code source
Posté par Christophe . Évalué à 4.
Tout le problème réside dans la façon dont est stockée ta chaîne de caractères dans le fichier source, qui est ensuite compilé.
Pour peu que ton "é" soit encodé sur 2 octets, t[1] sera insuffisant pour l'afficher correctement. Bien sûr, en supposant que ton affichage de terminal soit adapté à ce printf…
[^] # Re: Encodage du code source
Posté par jcnewb . Évalué à 1. Dernière modification le 23 septembre 2014 à 11:42.
tout est utf-8 sur mon système:
-les locales
-le terminal (option encodage)
-mon éditeur vim:"set encoding & set fileencoding"
[^] # Re: Encodage du code source
Posté par Bernez . Évalué à 3.
Tout à fait. Les caractères accentués du français pèsent 2 octets en UTF-8. On peut s'en convaincre en affichant la valeur de
sizeof(t)
.[^] # Re: Encodage du code source
Posté par jcnewb . Évalué à 3.
ok merci, j'ai compris;
[^] # Re: Encodage du code source
Posté par Krunch (site web personnel) . Évalué à 3.
Pour gérer les caractères multi-octets en C, on utiliser wprintf() et autre fonctions en w*() : http://pubs.opengroup.org/onlinepubs/009695399/functions/fwprintf.html
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.