#include <stdio.h> // <cstdio> en C++
int fgetc( FILE * stream );
int getc( FILE * stream );
int getchar();
Ces fonctions permettent toutes les trois de lire le caractère à la position courante du flux considéré.
La fonction getchar impose le flux : stdin. Pour les deux autres fonctions, le flux de caractères à utiliser
doit être spécifié en paramètre. Une fois le caractère lu, la position de la tête de lecture associé au flux considéré est décalée sur le
prochain caractère à lire.
En fait fgetc et getc sont identiques au détail près que sur certains compilateurs
la fonction getc est implémentée sous forme d'une macro.
fopen.
Soit un octet à correctement été lu, et dans ce cas sa valeur vous est retournée (entre 0 et 255), soit une erreur
c'est produite et dans ce cas la valeur EOF vous sera retournée. Cela donne 257 valeurs différentes
pouvant être renvoyées : cela explique que le type de retour soit int plutôt que
unsigned char.
Si une erreur vous est retournée (code EOF), il vous faudra alors consulter la variable
errno pour obtenir de plus amples informations.
EAGAIN : 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.
EBADF : le descripteur de flux (FILE *) passé en paramètre est invalide.
EINTR : la lecture sur une ressource lente a été interrompue par l'arrivée d'un signal avant que des données ne soient disponibles.
EIO : une erreur d'accès physique au flux vient d'être générée.
...
#include <stdio.h> #include <stdlib.h> int main( int argc, char * argv[] ) { argc--; argv++; if ( argc == 0 ) { printf( "Usage: sample filename\n" ); exit( 0 ); } FILE * inputFile = fopen( argv[0], "r" ); if ( inputFile == NULL ) { printf( "Cannot open file %s\n", argv[0] ); exit( -1 ); } while ( ! feof( inputFile ) ) { int theCurrentChar; printf( "Appuyez sur <ENTER> pour lire le prochain caractère du fichier"); fflush( stdin ); fgetc( stdin ); theCurrentChar = fgetc( inputFile ); printf( "Le caractère actuel est <<%c>>\n", theCurrentChar ); } fclose( inputFile ); return 0; }
Il est à noter que ce programme n'est certainement pas le plus efficace pour calculer la taille d'un fichier, mais il
est proposé à titre d'exemple d'utilisation de la fonction feof.
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 :