E/S de flux

Ces fonctions permettent de traiter des données de tailles et de formats différents, des caractères uniques jusqu'aux structures de données volumineuses. Elles assurent aussi une mise en mémoire tampon, ce qui peut améliorer les performances. La taille par défaut d'une mémoire tampon de flux est de 4 Ko. Ces routines concernent uniquement les mémoires tampons créées par les routines de bibliothèque Runtime et n'ont aucun effet sur les mémoires tampons créées par le système d'exploitation.

Flux de routines d’E/S

Routine Utilisation
clearerr, clearerr_s Effacer un indicateur d'erreur de flux
fclose Fermer un flux
_fcloseall Fermer tous les flux ouverts sauf stdin, stdoutet stderr
_fdopen, wfdopen Associer un flux au descripteur de fichier d'un fichier ouvert
feof Tester la fin de fichier sur un flux
ferror Tester la présence d'erreur sur un flux
fflush Vider un flux dans une mémoire tampon ou un dispositif de stockage
fgetc, fgetwc Lire un caractère dans le flux (versions fonction de getc et getwc)
_fgetchar, _fgetwchar Lire un caractère de stdin (versions fonction de getchar et getwchar)
fgetpos Obtenir l'indicateur de position du flux
fgets, fgetws Lire une chaîne du flux
_fileno Obtenir le descripteur de fichier associé au flux
_flushall Vider tous les flux dans une mémoire tampon ou un dispositif de stockage
fopen, _wfopen, fopen_s, _wfopen_s Ouvrir un flux
fprintf, _fprintf_l, fwprintf, _fwprintf_l, fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l Écrire des données mises en forme dans le flux
fputc, fputwc Écrire un caractère dans un flux (versions fonction de putc et putwc)
_fputchar, _fputwchar Écrire un caractère dans stdout (versions fonction de putchar et putwchar)
fputs, fputws Écrire une chaîne dans le flux
fread Lire des données non mises en forme dans le flux
freopen, _wfreopen, freopen_s, _wfreopen_s Réaffecter le pointeur de flux FILE à un nouveau fichier ou périphérique
fscanf, fwscanf, fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l Lire les données mises en forme du flux
fseek, _fseeki64 Déplacer la position d'un fichier vers un emplacement donné
fsetpos Définir l'indicateur de position du flux
_fsopen, _wfsopen Ouvrir le flux avec le partage de fichiers
ftell, _ftelli64 Obtenir la position actuelle d'un fichier
fwrite Écrire des éléments de données non mis en forme dans le flux
getc, getwc Lire un caractère dans le flux (versions macro de fgetc et fgetwc)
getchar, getwchar Lire un caractère dans stdin (versions macro de fgetchar et fgetwchar)
_getmaxstdio Retourner le nombre autorisé de fichiers ouverts simultanément au niveau de l'E/S du flux
gets_s, _getws_s Lire une ligne de stdin
_getw Lire un int binaire dans le flux
printf, _printf_l, wprintf, _wprintf_l,printf_s, _printf_s_l, wprintf_s, _wprintf_s_l Écrire des données mises en forme dans stdout
putc, putwc Écrire un caractère dans un flux (versions macro de fputc et fputwc)
putchar, putwchar Écrire un caractère dans stdout (versions macro de fputchar et fputwchar)
puts, _putws Écrire une ligne dans le flux
_putw Écrire un int binaire dans le flux
rewind Déplacer la position d'un fichier au début du flux
_rmtmp Supprimer les fichiers temporaires créés par tmpfile
scanf, _scanf_l, wscanf, _wscanf_l,scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l Lire les données mises en forme de stdin
setbuf Contrôler la mise en mémoire tampon du flux
_setmaxstdio Définir un nombre maximal de fichiers ouverts simultanément au niveau de l'E/S du flux
setvbuf Contrôler la mise en mémoire tampon du flux et la taille de la mémoire tampon
_snprintf, _snwprintf, _snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l Écrire des données mises en forme de la longueur spécifiée dans une chaîne
_snscanf, _snwscanf, _snscanf_s, _snscanf_s_l, _snwscanf_s, _snwscanf_s_l Lire les données mises en forme d'une longueur spécifiée dans le flux d'entrée standard
sprintf, swprintf, sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l Écrire des données mises en forme dans une chaîne
sscanf, swscanf, sscanf_s_sscanf_s_l, swscanf_s, _swscanf_s_l Lire les données mises en forme d'une chaîne
_tempnam, _wtempnam Générer un nom de fichier temporaire dans un répertoire donné
tmpfile, tmpfile_s Créer un fichier temporaire
tmpnam, _wtmpnam, tmpnam_s, _wtmpnam_s Générer un nom de fichier temporaire
ungetc, ungetwc Remettre un caractère dans le flux
_vcprintf, _vcwprintf, _vcprintf_s, _vcprintf_s_l, _vcwprintf_s, _vcwprintf_s_l Écrire des données mises en forme dans la console
vfprintf, vfwprintf, vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l Écrire des données mises en forme dans le flux
vprintf, vwprintf, vprintf_s, _vprintf_s_l, vwprintf_s, _vwprintf_s_l Écrire des données mises en forme dans stdout
_vsnprintf, _vsnwprintf, vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l Écrire des données mises en forme de la longueur spécifiée dans la mémoire tampon
vsprintf, vswprintf, vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l Écrire des données mises en forme dans la mémoire tampon

Quand un programme lance l'exécution, le code de démarrage ouvre automatiquement plusieurs flux : une entrée standard (désignée par stdin), une sortie standard (désignée par stdout) et une erreur standard (désignée par stderr). Par défaut, ces flux sont dirigés vers la console (clavier et écran). Utilisez freopen pour rediriger stdin, stdoutou stderr vers un fichier sur disque ou un périphérique.

Par défaut, les fichiers ouverts à l'aide des routines de flux sont mis en mémoire tampon. Les stdout fonctions et stderr les fonctions sont vidées chaque fois qu’elles sont complètes ou, si vous écrivez sur un appareil de caractères, après chaque appel de bibliothèque. Si un programme se termine de façon anormale, il est possible que les mémoires tampons de sortie ne se vident pas, entraînant ainsi une perte de données. Utilisez fflush ou _flushall vérifiez que la mémoire tampon associée à un fichier spécifié est vidée sur le système d’exploitation, ou que toutes les mémoires tampons ouvertes sont vidées. Le système d’exploitation peut mettre en cache les données avant de les écrire sur disque. La fonctionnalité commit-to-disk garantit que le contenu de la mémoire tampon vidée n’est pas perdu en cas de défaillance du système.

Il existe deux façons de valider le contenu de mémoire tampon sur disque :

  • Créer un lien avec le fichier COMMODE.OBJ pour définir un indicateur de validation global. Le paramètre par défaut de l'indicateur global est n, pour « no-commit » (pas de validation).

  • Attribuer à l'indicateur de mode la valeur c avec fopen ou _fdopen.

Le comportement d'un fichier spécifiquement ouvert avec l'indicateur c ou n varie en fonction de cet indicateur, quel que soit l'indicateur de validation global (« commit »/« no-commit »).

Si votre programme ne ferme pas explicitement un flux, le flux est automatiquement fermé lorsque le programme se termine. Cependant, vous devez fermer un flux une fois que le programme en a terminé avec celui-ci, car le nombre de flux pouvant être ouverts simultanément est limité. Consultez _setmaxstdio pour plus d’informations sur cette limite.

Une entrée ne peut suivre directement une sortie qu'à condition de faire un appel intermédiaire à fflush ou à une fonction de positionnement de fichier (fseek, fsetposou rewind). L’entrée peut être suivie d’une sortie sans appel intermédiaire à une fonction de positionnement de fichier, si l’opération d’entrée rencontre la fin du fichier.

Voir aussi

Entrée et sortie
Routines du runtime C universel par catégorie