Si une erreur de codage survient lors de l'interprétation de caractères larges, la fonction définit errno sur EILSEQ.Est-il possible qu'il y ait une erreur de codage lors de la lecture d'un caractère?
scanf("%d", &i);
Si l'entrée est plus 2147483648 (si i
est signed int
), scanf
va changer la valeur de errno
.
Mais si je tente de lire un caractère, comme ceci:
scanf("%c", &c);
Est-il possible d'entrer un caractère qui provoque une erreur de codage? Je l'ai testé avec l'entrée UTF-8, mais cela a bien fonctionné (pour ௮
, c
le code décimal est -32
, mais errno
est 0
).
'% c' doesn Ne fais pas de caractères larges. '% lc' serait le spécificateur de conversion pertinent. – EOF
Votre programme fonctionne entièrement comme prévu. La première valeur de caractère de votre personnage Tamil Unicode '8', U + 0BEE, est en effet de 224 en notation UTF8. Lorsqu'il est interprété comme une valeur de caractère * signed *, c'est le '-32' que vous obtenez. – usr2564301