Fonction clearerr

Entête à inclure

#include <stdio.h>  // <cstdio> en C++

Fonction clearerr

void clearerr( FILE * stream );

Cette fonction permet de remettre à zéro l'indicateur d'erreur pour le flux de caractères considéré. Pour rappel, vous pouvez connaitre le statut d'erreur associé à un flux par le biais de la fonction ferror.

Paramètre

  • stream : ce paramètre permet d'indiquer le flux de caractères (ou d'octets) pour lequel, il nous faut remettre à zéro le statut d'erreur.

Exemple de code

L'exemple ci-dessous déclenche une erreur (une tentative d'écriture est réalisée sur un flux ouvert en lecture uniquement). Du coup, le statut d'erreur est levé pour le flux considéré. Il est alors possible de le remettre à zéro.

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

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

    FILE * myFile = fopen( "anExistingFile", "r" );
    int rc = fputc( '!', myFile );

    printf( "Results == %d %d\n", ferror( myFile ), errno );
    clearerr( myFile );
    printf( "Results == %d %d\n", ferror( myFile ), errno );    

    rc = fclose( myFile );
        
    return 0;
}

Le résutat produit par l'exécution de ce programme est le suivant :

$> sample
Results == 1 9
Results == 0 9
$>

Notez bien que la variable errno n'a pas était impactée. Seul l'indicateur d'erreur associé au fichier manipulé est réinitialisé !

Sujets connexes