#include <stdio.h> // <cstdio> en C++
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.
fopen
.
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.
EBADF : le descripteur de flux (FILE *
) passé en paramètre est invalide (certainement nul ou bien ouvert en lecture
et non en modification).
...
#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; }
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 :