Participer au site avec un Tip
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 :

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

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

ferror
perror