stdio - Bibliothèque standard de fonctions d'entrées/sorties.
Cette bibliothéque standard fournit une interface simple et efficace pour les
entrées/sorties avec buffers. Les entrées et les sorties sont projetées dans
des flux de données logiques, et les caractéristiques des entrées/sorties
physiques sont masquées. Les fonctions et les macros sont présentées rapidement
ci-dessous. Des informations supplémentaires sont disponibles dans leurs pages
de manuel individuelles.
Un flux est associé avec un fichier externe (qui peut aussi être un dispositif
physique) en
ouvrant
un fichier (ceci peut impliquer la création d'un nouveau fichier). La création
d'un fichier déjà existant efface son contenu précédent. Si un fichier
supporte les demandes de positionnement (par exemple un fichier sur disque,
contrairement à un terminal), alors
l'indicateur de position du fichier
associé au flux est placé au début du fichier (octet zéro), à moins que
le fichier soit ouvert en mode d'ajout. Si le mode d'ajout est utilisé,
l'indicateur de position est placé à la fin du fichier.
L'indicateur de position est mis à jour après chaque lecture, écriture, ou
repositionnement. Toutes les entrées se déroulent comme si les caractères
étaient lus par des appels successifs à la fonction
fgetc(3).
Toutes les sorties ont lieu comme si les caractères étaient envoyés à
des appels successifs à la fonction
fputc(3).
Un fichier est dissocié d'un flux en
fermant
le fichier. Les flux de sortie sont vidés (flush) avant que le flux soit
dissocié du fichier. Ceci signifie que le contenu des buffers pas encore
écrits est transféré dans l'environnement de l'hôte.
La valeur d'un pointeur sur un objet
FILE
(fichier) est indéfinie après la fermeture d'un fichier.
Un fichier peut être réouvert plus tard par le même programme ou par un
autre, et son contenu relu ou modifié (si l'on peut placer l'indicateur
de positionnement au début).
Si la fonction
main se termine, ou si la fonction
exit(3)
est invoquée, tous les fichiers sont fermés (tous les buffers de sortie sont
transférés par fflush) avant la fin du programe. Les autres méthodes
d'abandon du programme, telles que
abort(3)
ou
_exit(2)
ne s'occupent pas de fermer proprement les fichiers.
Au démarrage du programme, trois flux de texte sont prédéfinis et n'ont
pas besoin d'être ouverts explicitement :
l'entrée standard
(pour la lecture des données),
la sortie standard
(pour l'écriture des données), et
le flux d'erreur standard
(pour les messages de diagnostique).
Ces flux sont nommés
stdin,
stdout
et
stderr.
A l'ouverture, le flux d'erreur n'a pas de buffer, l'entrée standard et la
sortie standard ont des buffers complets si et seulement si ils ne se
réfèrent pas à un périphérique interactif.
Les flux de sortie qui s'adressent à un peripherique terminal disposent
toujours d'un buffer de ligne par défaut. Les caractères sont conservés
dans le buffer jusqu'à un saut de ligne, ou jusqu'à ce qu'une lecture soit
demandée sur un flux associé au même terminal. Il peut être nécessaire
de déclencher intentionnellement l'écriture effective sur le terminal en
invoquant
fflush(3).
La bibliothèque standard
stdio
fait partie de la bibliothèque
libc
et ses routines sont chargées automatiquement par les
compilateurs
cc(1)
et
pc(1)
si besoin est.
Les sections
SYNOPSIS
des pages de manuel mentionnées plus bas indiquent les fichiers d'en-tête nécessaires,
l'allure des déclarations de fonctions, et les variables externes utiles.
Les noms ci-dessous correspondent à des macros. On ne peut pas les réutiliser
sans supprimer leur définition précédente avec
#undef:
BUFSIZ,
EOF,
FILENAME_MAX,
FOPEN_MAX,
L_cuserid,
L_ctermid,
L_tmpnam,
NULL,
SEEK_END,
SEEK_SET,
SEE_CUR,
TMP_MAX,
clearerr,
feof,
ferror,
fileno,
fropen,
fwopen,
getc,
getchar,
putc,
putchar,
stderr,
stdin,
stdout.
Il existe des définitions sous forme de fonctions des macros
feof,
ferror,
clearerr,
fileno,
getc,
getchar,
putc,
et
putchar
qui seront utilisées si la definition de la macro est explicitement
supprimée.
Christophe Blaess, 1996-2003.