Rechercher
 

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 :

Macro EILSEQ (C95)

La macro EDOM.h La macro ERANGE


Entête à  inclure

#include <errno.h>  // <cerrno> en C++

Macro EILSEQ (C95)

#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.

Exemple de code

 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;
}
Exemple de test avec la macro EILSEQ

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
$> 

Sujets connexes

errno
strerror


La macro EDOM.h La macro ERANGE