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 fflush

Entête à inclure

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

Fonction fflush

int fflush( FILE * stream );

Certaines opérations d'écriture proposées par la librairie stdio.h utilisent des buffers en mémoire : les modifications ne sont pas forcément appliquées directement sur le fichier. La synchronisation du buffer en mémoire avec le fichier sera faites soit si le buffer en plein, soit si vous fermez le flux, soit si vous demandez explicitement une synchronisation. La fonction fflush permet de forcer explicitement cette synchronisation.

Paramètres

Valeur de retour

Si tout se passe bien, une valeur nulle vous sera retournée. Si une erreur empèche la synchronisation, alors la valeur EOF vous sera retournée. Consultez alors la variable errno pour obtenir plus d'informations sur la cause de l'erreur.

Codes erreurs pouvant être retournés

EBADF : le descripteur de flux (FILE *) passé en paramètre est invalide (certainement nul ou bien ouvert en lecture et non en modification).

...

Exemple de code

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

int main() {

    int returnCode;
    int count;
    int index;

    printf( "Contact count to insert: " );
    scanf( "%d", &count );

    FILE * stream = fopen( "Contacts.txt", "w" );
    if ( stream == NULL ) {
        fprintf( stderr, "Cannot open file for writing\n" );
        exit( -1 );
    }

    for( index=0; index<count; index++ ) {
        char bufferFirstName[30];
        char bufferLastName[30];

        printf( "Please enter a first name: " );
        scanf( "%s", bufferFirstName );

        printf( "Please enter a last name: " );
        scanf( "%s", bufferLastName );

        fprintf( stream, "| %-30s | %-30s | ... |\n",
                 bufferFirstName, bufferLastName );

        printf( "Contact inserted\n" );
        
        // Comment/uncomment the following lines and
        // display the file between each insertion.
        if ( fflush( stream ) ) {
            fprintf( stderr, "Cannot flush the stream\n" );
            break;
        }
    }

    returnCode = fclose( stream );
    if ( returnCode == EOF ) {
        fprintf( stderr, "Cannot close file\n" );
        exit( -1 );
    }
    
    return 0;
}

Sujets connexes

fputc
fwrite
fclose