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 , 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 , _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
, 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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour