Notre page Facebook
Notre groupe Facebook

Accueil KooR.fr
 |_ 
Accueil Langage C
    |_ 
<errno.h>

Variable errno

Entête à  inclure

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

Variable errno

int errno;

Cette variable contient le code de la dernière erreur ayant était déclenchée dans le système. Par exemple les différents fonctions d'accès aux fichiers peuvent théoriquement déclencher un très grand nombre d'erreur.

Parmis les principaux codes d'erreurs, nous pouvons citer :

EAGAIN : si on est en lecture, le descripteur de flux est marqué comme non-bloquant et aucune données n'est disponible pour l'instant. Il faudra retenter la lecture ultérieurement. Si on est en écriture, le flux est vérrouillé et il faudra tenter ultérieurement l'écriture.

EBADF : le descripteur de flux (FILE *) passé en paramètre est invalide.

EDOM : certaines fonctions mathématiques peuvent déclencher une erreur de domaine.

EIO : une erreur d'accès physique au flux vient d'être générée.

ERANGE : la valeur, spécifiée à la fonction ayant déclenchée l'erreur,n'est pas dans une plage de valeurs autorisées.

Exemple de code

#include <stdio.h>          
#include <assert.h>
#include <errno.h>

int main( int argc, char * argv[] ) {

    FILE * inputFile;
    
    argc--;   argv++;
    
    if ( argc == 0 ) {
        printf( "Usage: sample filename...\n" );
        exit( 0 );
    }
    
    inputFile = fopen( argv[0], "r" );
    if ( inputFile == NULL ) {
        printf( "Cannot open file %s\n", argv[0] );
        exit( 0 );
    }
    
    while ( ! feof( inputFile ) ) {
        int theCurrentChar = fgetc( inputFile );
        if ( theCurrentChar == EOF ) {
            if ( errno == EIO ) {
                fprintf( stderr, 
                         "Lecture du caractère impossible : erreur IO\n" );
            } else {
                fprintf( stderr, 
                         "Lecture du caractère impossible : erreur inconnue" );
            }
        }
        /* . . . */
    }

    fclose( inputFile );

    return 0;
}