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 :

Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé

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 de formatage basées sur va_list
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
Compléments documentés pour stdio.h

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 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 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. À 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
getline Fonction Permet de lire une ligne complète depuis un flux, en allouant ou en agrandissant automatiquement le buffer si nécessaire. POSIX
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 de formatage basées sur va_list

Les fonctions suivantes sont destinées aux fonctions qui manipulent elles-mêmes une liste de paramètres variables via le type va_list.

Nom Type Description Depuis
vfprintf Fonction Permet d'envoyer une chaîne formatée dans le flux spécifié à partir d'une liste va_list. C89
vprintf Fonction Permet d'envoyer une chaîne formatée dans le flux stdout à partir d'une liste va_list. C89
vsprintf Fonction Permet d'envoyer des données formatées dans une chaîne de caractères à partir d'une liste va_list. C89
vsnprintf Fonction Permet d'envoyer des données formatées dans une chaîne de caractères, en limitant la taille du buffer utilisé. C99
vfprintf_s Fonction Version C11 sécurisée de vfprintf, proposée par l'annexe K. C11
vprintf_s Fonction Version C11 sécurisée de vprintf, proposée par l'annexe K. C11
vsprintf_s Fonction Version C11 sécurisée de vsprintf, proposée par l'annexe K. C11
vsnprintf_s Fonction Version C11 sécurisée de vsnprintf, proposée par l'annexe K. C11

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 plaçant 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ères. C89
snprintf Fonction Permet d'envoyer des données formatées dans une chaîne de caractères, en limitant la taille du buffer utilisé. C99
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




Compléments documentés pour stdio.h

Les éléments suivants complètent la documentation de l'entête <stdio.h>, notamment pour les ajouts ISO récents et les extensions POSIX.

NomTypeDescription
__STDC_VERSION_STDIO_H__ (C23) macro Version de l'entête stdio.h.
ctermid (POSIX) fonction Construit le nom du terminal de contrôle du processus.
dprintf (POSIX) fonction Ecrit une chaîne formatée vers un descripteur de fichier POSIX.
fdopen (POSIX) fonction Associe un flux FILE * à un descripteur de fichier existant.
fileno (POSIX) fonction Retourne le descripteur POSIX associé à un flux FILE *.
flockfile (POSIX) fonction Verrouille un flux pour effectuer une séquence d'accès atomique côté bibliothèque C.
fmemopen (POSIX) fonction Ouvre un flux dont le stockage est un tampon mémoire.
fopen_s (C11) fonction Variante sécurisée optionnelle de la famille fopen.
fprintf_s (C11) fonction Variante sécurisée optionnelle de la famille fprintf.
freopen_s (C11) fonction Variante sécurisée optionnelle de la famille freopen.
fscanf_s (C11) fonction Variante sécurisée optionnelle de la famille fscanf.
fseeko (POSIX) fonction Déplace la position d'un flux en utilisant le type POSIX off_t.
ftello (POSIX) fonction Retourne la position courante d'un flux sous forme de off_t.
ftrylockfile (POSIX) fonction Tente de verrouiller un flux sans bloquer si le verrou n'est pas disponible.
funlockfile (POSIX) fonction Libère un verrou acquis sur un flux avec flockfile ou ftrylockfile.
getc fonction Lit le prochain caractère d'un flux. Cette interface peut être implémentée sous forme de macro.
getc_unlocked (POSIX) fonction Version non verrouillée de getc.
getchar fonction Lit le prochain caractère depuis l'entrée standard.
getchar_unlocked (POSIX) fonction Version non verrouillée de getchar.
getdelim (POSIX) fonction Lit dynamiquement une séquence de caractères jusqu'à un délimiteur.
gets_s (C11) fonction Variante sécurisée optionnelle de la famille gets.
open_memstream (POSIX) fonction Ouvre un flux d'écriture qui construit automatiquement un tampon mémoire.
pclose (POSIX) fonction Ferme un flux ouvert par popen et attend la fin de la commande associée.
popen (POSIX) fonction Ouvre un flux connecté à l'entrée ou à la sortie d'une commande shell.
printf fonction Ecrit une chaîne formatée sur la sortie standard.
printf_s (C11) fonction Variante sécurisée optionnelle de la famille printf.
putc fonction Ecrit un caractère dans un flux. Cette interface peut être implémentée sous forme de macro.
putc_unlocked (POSIX) fonction Version non verrouillée de putc.
putchar fonction Ecrit un caractère sur la sortie standard.
putchar_unlocked (POSIX) fonction Version non verrouillée de putchar.
puts fonction Ecrit une chaîne suivie d'un saut de ligne sur la sortie standard.
renameat (POSIX) fonction Renomme une entrée relativement à deux descripteurs de répertoire.
scanf fonction Lit des données formatées depuis l'entrée standard.
scanf_s (C11) fonction Variante sécurisée optionnelle de la famille scanf.
setbuf fonction Configure simplement le tampon associé à un flux.
setvbuf fonction Configure précisément le mode et la taille du tampon associé à un flux.
snprintf_s (C11) fonction Variante sécurisée optionnelle de la famille snprintf.
sprintf fonction Ecrit une chaîne formatée dans un tampon.
sprintf_s (C11) fonction Variante sécurisée optionnelle de la famille sprintf.
sscanf fonction Lit des données formatées depuis une chaîne.
sscanf_s (C11) fonction Variante sécurisée optionnelle de la famille sscanf.
tmpfile_s (C11) fonction Variante sécurisée optionnelle de la famille tmpfile.
tmpnam_s (C11) fonction Variante sécurisée optionnelle de la famille tmpnam.
ungetc fonction Replace un caractère dans le flux d'entrée.
vdprintf (POSIX) fonction Version va_list de dprintf.
vfscanf (C99) fonction Version va_list de fscanf.
vfscanf_s (C11) fonction Variante sécurisée optionnelle de la famille vfscanf.
vprintf fonction Version va_list de printf.
vprintf_s (C11) fonction Variante sécurisée optionnelle de la famille vprintf.
vscanf (C99) fonction Version va_list de scanf.
vscanf_s (C11) fonction Variante sécurisée optionnelle de la famille vscanf.
vsnprintf (C99) fonction Version bornée et va_list de snprintf.
vsnprintf_s (C11) fonction Variante sécurisée optionnelle de la famille vsnprintf.
vsprintf fonction Version va_list de sprintf.
vsprintf_s (C11) fonction Variante sécurisée optionnelle de la famille vsprintf.
vsscanf (C99) fonction Version va_list de sscanf.
vsscanf_s (C11) fonction Variante sécurisée optionnelle de la famille vsscanf.
Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé