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 | Utiliser |
---|---|
clearerr , clearerr_s |
Effacer un indicateur d'erreur de flux |
fclose |
Fermer un flux |
_fcloseall |
Fermer tous les flux ouverts sauf stdin , stdout et 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_l fwprintf , 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_l fscanf_s , , 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_l _snprintf_s , , _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_l _snscanf_s , , _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_l sprintf_s , , 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_l _vcprintf_s , , _vcwprintf_s _vcwprintf_s_l |
Écrire des données mises en forme dans la console |
vfprintf , , vfwprintf , _vfprintf_s_l vfprintf_s , , vfwprintf_s _vfwprintf_s_l |
Écrire des données mises en forme dans le flux |
vprintf , , vwprintf , _vprintf_s_l vprintf_s , , 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_l vsprintf_s , , 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
, stdout
ou 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
avecfopen
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
, fsetpos
ou 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