2 La bibliothèque
Les fonctions de la bibliothèque manipulent des flots,
nommés stream
implémentés par des FILE*
.
Le tampon associé à un flot est dans l'espace usager : les
transferts mémoire sont plus rapides ; il n'est pas partagé entre
les processus ; il n'y aura pas de vidages intempestifs obligeant à
le relire depuis le disque ; sa taille est choisie pour correspondre
aux caractéristiques du périphérique. Les entrées/sorties de
bas niveau se feront bien par taille et sur des frontières multiples
de la taille des tampons systèmes1.
Détaillons quelques fonctions de la bibliothèque :
- FILE *fopen (char *path, char *type) ;
- L'ouverture d'un
fichier est réalisé par un appel à
fopen()
. path
est
le nom du fichier dans le système de fichier ; type
indique
le mode d'ouverture ; par exemple "w"
indique une ouverture en
écriture et "r"
une ouverture en lecture.
- int fclose (FILE *stream) ;
- La fonction
fclose()
vide le tampon usager associé au flot stream
si celui-ci est
ouvert en écriture et ferme le fichier correspondant.
- int fflush (FILE *stream) ;
- La fonction
fflush()
vide le tampon usager associé au flot stream
si celui-ci est
ouvert en écriture.
- int fread (void *ptr, int ptrsize, int nitems, FILE *
stream) ;
- Cette fonction lit
nitems
articles de
taille ptrsize
dans le tampon associé au flot stream
et le
range à partir de ptr
; fread()
retourne le nombre
d'articles effectivement lus.
- int fwrite (void *ptr, int ptrsize, int nitems, FILE *
stream) ;
- Cette fonction écrit
nitems
articles de
taille ptrsize
à partir du pointeur ptr
dans le tampon
associé au flot stream
; fwrite()
retourne le nombre
d'articles effectivement écrits.
- fputc (char c, FILE * stream) ;
- La fonction
fputc()
écrit le caractère c
dans le fichier désigné.
- int fgetc (FILE * stream) ;
- La fonction
fgetc()
lit
un caractère dans le fichier désigné et le retourne ; en fin
de fichier, fgetc()
retourne la constante entière EOF
.
- int ungetc (char c, FILE *stream) ;
- Il est possible
d'annuler la dernière lecture d'un caractère par un
appel
ungetc()
qui remet le caractère c
dans le flot
stream
ouvert en lecture. Ce caractère sera celui retourné
par le prochain appel à fgetc()
. Un appel à ungetc()
n'est valide que si effectivement un caractère a déjà
été lu sur le flot stream
. De plus, il est impossible de
remettre EOF
. ungetc()
retourne le caractère remis,
EOF
en cas d'impossibilité.