Participer au site avec un Tip
Rechercher
 

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 :

La librairie <stdio.h> (<cstdio> en C++)

La fonction clearerr


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.

Les types de données proposés

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 d'entrée. 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.

Les trois flux standards de votre processus

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.

Les fonctions d'ouverture et de fermeture de flux

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

Les fonctions de manipulation des flux

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

Les fonctions et macros de positionnement dans un flux

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.

les deux techniques sont similaires mais certains systèmes peuvent ne fournir qu'une seule possibilité.
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

Les fonctions de gestion d'erreurs de manipulation de vos flux

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

Les fonctions de gestion des fichiers

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

Les autres fonctions de la librairie

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


La fonction clearerr