Accès rapide :
Les types de données proposés
Les fonctions d'ouverture et de fermeture de flux
Les fonctions de manipulation des flux
Les fonctions et macros de positionnement dans un flux
Les fonctions de gestion d'erreurs de manipulation de vos flux
Les fonctions de gestion des fichiers
Les autres fonctions de la librairie
Cette librairie, certainement l'une des plus utilisées en C, permet principalement la manipulation des flux de caractères (que ce soit vers un fichier ou la console). Cette librairie propose aussi un ensemble de fonctions utiles pour la gestion de vos fichiers.
Le type FILE * (un pointeur sur une structure) permet de stocker les informations relatives à un flux de caractères.
Par exemple, lorsque vous manipulez un fichier (en lecture ou en écriture), vous manipulerez ce type de pointeurs pour représenter le fichier.
Mais ce type est aussi utilisé pour manipuler les flux de votre programme stdin
, stdout
et stderr
.
Le type fpos_t
représente une position à l'intérieur d'un flux.
Voici un résumé de ces premiers éléments.
Nom | Type | Description | Depuis |
---|---|---|---|
FILE * | Type | Un pointeur vers une structure de type FILE , associée à un fichier en cours d'utilisation. |
C89 |
fpos_t | Type | Ce type représente une position à l'intérieur d'un flux. | C89 |
stdin | Variable globale | Représente le flux standard d'entrée. Par défaut, il est associé à la saisie clavier sur la console. | C89 |
stdout | Variable globale | Représente le flux standard de sortie. Par défaut, il est associé aux messages affichés sur la console. | C89 |
stderr | Variable globale | Représente le flux standard d'erreur. Par défaut, il est lui aussi redirigé sur la console. | C89 |
Tout processus (donc programme) possède trois ces trois flux standards, comme le montre le diagramme ci-dessous.
Il est possible, sur un système d'exploitation quelconque de rediriger les flux standard à partir ou vers d'autres fichiers. Voici quelques exemples de syntaxes liées à la redirection des flux standards
Commande | Signification |
---|---|
$> yourprogram < input.txt | L'entrée standard de votre programme est redirigée à partir du fichier input.txt . A partir de maintenant les lectures à partir de stdin, manipuleront ce fichier. |
$> yourprogram > results.txt | Le flux standard de sortie est redirigé vers results.txt . Tous les affichages via printf , par exemple, se retrouveront dans ce fichier. |
$> yourprogram 1> results.txt | Similaire à l'exemple précédent. |
$> yourprogram 2> errors.txt | Le flux standard d'erreur est redirigé vers errors.txt . Toutes les erreurs seront transférées dans ce fichier. |
$> yourprogram < input.txt 1> results.txt 2> errors.txt | Les trois flux standards de votre programme sont redirigés sur différents fichiers. |
Le tableau suivant liste les fonctions permettant d'ouvrir ou de fermer un fichier.
Nom | Type | Description | Depuis |
---|---|---|---|
fclose | Fonction | Permet de fermer un flux préalablement ouvert avec la fonction fopen ou la fonction freopen . |
C89 |
fopen | Fonction | Permet d'ouvrir un flux de caractères basé sur un fichier. | C89 |
freopen | Fonction | Permet d'ouvrir un fichier en recyclant la structure FILE * . |
C89 |
tmpfile | Fonction | Permet d'ouvrir un fichier binaire temporaire. | C89 |
Il existe un grand nombre de fonctions permettant de manipuler le contenu d'un fichier sous forme d'un flux d'octets
(d'un flux de caractères s'il s'agit d'un fichier texte). Ces fonctions sont très facilement reconnaissables : elles
commencent très souvent par un caractère f
(par exemple, fclose
).
Nom | Type | Description | Depuis |
---|---|---|---|
feof | Fonction | Permet de déterminer si la position courante est en fin de fichier (de flux) ou non. | C89 |
fflush | Fonction | Permet de synchroniser le buffer associé au flux. | C89 |
fgetc | Fonction | Permet de lire le caractère à la position courante du flux considéré. | C89 |
fgets | Fonction | Permet de lire la ligne de texte à partir de la position courante du flux considéré. | C89 |
fprintf | Fonction | Permet d'envoyer une chaîne formatée dans le flux spécifié. | C89 |
fputc | Fonction | Permet d'envoyer un caractère dans le flux spécifié. | C89 |
fputs | Fonction | Permet d'ajouter une nouvelle ligne de texte dans le flux spécifié. | C89 |
fread | Fonction | Permet de lire des blocs de données à partir du flux spécifié. | C89 |
fscanf | Fonction | Permet de lire des données dans une chaîne formatée à partir du flux spécifié. | C89 |
fwrite | Fonction | Permet d'écrire des blocs de données dans le flux spécifié. | C89 |
getc | Fonction | Permet de lire le caractère à la position courante à partir de stdin . |
C89 |
getchar | Fonction | Permet de lire le caractère à la position courante à partir de stdin . |
C89 |
gets | Fonction | Permet de lire la ligne de texte à partir de la position courante du flux stdin . |
C89 |
printf | Fonction | Permet d'envoyer une chaîne formatée dans le flux stdout . |
C89 |
putc | Fonction | Permet d'écrire un caractère dans le flux stdout . |
C89 |
putchar | Fonction | Permet d'écrire un caractère dans le flux stdout . |
C89 |
puts | Fonction | Permet d'ajouter une nouvelle ligne de texte dans le flux stdout . |
C89 |
scanf | Fonction | Permet de lire des données dans une chaîne formatée à partir du flux stdin . |
C89 |
La librairie <stdio.h>
propose deux manières de gérer le positionnement dans un flux (dans un fichier).
Soit vous utilisez le couple de fonctions fgetpos
/fsetpos
soit
vous utilisez le couple ftell
/fseek
.
Nom | Type | Description | Depuis |
---|---|---|---|
fgetpos | Fonction | Cette fonction permet de récupérer la position courante de la tête de lecture sur un fichier (ou plus généralement la position courante dans un flux). | C89 |
fseek | Fonction | Cette fonction permet de modifier la position courante de la tête de lecture sur un fichier binaire (ou plus généralement la position courante dans un flux binaire). | C89 |
fsetpos | Fonction | Cette fonction permet de changer la position courante de la tête de lecture sur un fichier (ou plus généralement la position courante dans un flux). | C89 |
ftell | Fonction | Cette fonction permet de récupérer la position courante de la tête de lecture sur un fichier (ou plus généralement la position courante dans un flux). | C89 |
rewind | Fonction | Cette fonction permet de réinitialiser un flux en placant la tête de lecture en début de fichier et en effaçant aussi l'indicateur d'erreur du flux. | C89 |
SEEK_CUR | Macro | Permet le positionnement dans un flux à partir de la position courante. | C89 |
SEEK_END | Macro | Permet le positionnement dans un flux à partir de sa fin. | C89 |
SEEK_SET | Macro | Permet le positionnement dans un flux à partir de son début. | C89 |
Nom | Type | Description | Depuis |
---|---|---|---|
clearerr | Fonction | Cette fonction permet de remettre à zéro l'indicateur d'erreur pour le flux de caractères considéré. | C89 |
ferror | Fonction | Vérifie si le statut d'erreur est levé pour le flux spécifié. | C89 |
perror | Fonction | Affiche sous forme textuelle, le message d'erreur associé à la variable errno . |
C89 |
Quelques fonctions permettent de gérer le fichier et non son contenu.
Nom | Type | Description | Depuis |
---|---|---|---|
remove | Fonction | Permet de supprimer un fichier. | C89 |
rename | Fonction | Permet de renommer un fichier. | C89 |
Et voici quelques autres fonctions proposées par le module <stdio.h>
.
Nom | Type | Description | Depuis |
---|---|---|---|
sprintf | Fonction | Permet d'envoyer des données formatées dans une chaîne de caractère. | C89 |
sscanf | Fonction | Permet de lire des données à partir d'une chaîne formatée. | C89 |
tmpnam | Fonction | Permet de produire un nom de fichier unique et disponible au moment de l'invocation de la fonction. | C89 |
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 :