#include <errno.h> // <cerrno> en C++
#define EILSEQ 84 /* Valeur numérique dépendante du système */
Correspond à une erreur retournée en cas d'utilisation d'une séquence de bytes non autorisée (ILlegal SEQuence) sur une opération de chaîne multi-octets.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#include <errno.h> #include <locale.h> #include <stdio.h> #include <stdlib.h> int main() { // On se place en mode UTF-8 pour gérer des caractères multi-octets. setlocale( LC_ALL, "en_US.utf8" ); // On crée une chaîne avec un caractère multi-octets (la lettre Grecque PI). const char * str = u8"\u03c0 est une lettre Grecque.\n"; // On affiche la chaîne printf( str ); // On traite une chaîne incohérente (avec une séquence illégale). wchar_t wideString[32]; mbstowcs( wideString, "\xff", 1 ); if ( errno == EILSEQ ) { printf( "Séquence illégale détectée\n" ); } return EXIT_SUCCESS; } |
Les résultats produits par cet exemple sont :
$> gcc -o essai essai.c $> ./essai π est une lettre Grecque. Séquence illégale détectée $>
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :