E/S de fluxStream I/O

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.These functions process data in different sizes and formats, from single characters to large data structures. Elles assurent aussi une mise en mémoire tampon, ce qui peut améliorer les performances.They also provide buffering, which can improve performance. La taille par défaut d'une mémoire tampon de flux est de 4 Ko.The default size of a stream buffer is 4K. 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.These routines affect only buffers created by the run-time library routines, and have no effect on buffers created by the operating system.

Routines d'E/S de fluxStream I/O Routines

RoutineRoutine UtilisezUse
clearerr, clearerr_sclearerr, clearerr_s Effacer un indicateur d'erreur de fluxClear error indicator for stream
fclosefclose Fermer un fluxClose stream
_fcloseall_fcloseall Fermer tous les flux ouverts sauf stdin, stdout et stderrClose all open streams except stdin, stdout, and stderr
_fdopen, wfdopen_fdopen, wfdopen Associer un flux au descripteur de fichier d'un fichier ouvertAssociate stream with file descriptor of open file
feoffeof Tester la fin de fichier sur un fluxTest for end of file on stream
ferrorferror Tester la présence d'erreur sur un fluxTest for error on stream
fflushfflush Vider un flux dans une mémoire tampon ou un dispositif de stockageFlush stream to buffer or storage device
fgetc, fgetwcfgetc, fgetwc Lire un caractère dans le flux (versions fonction de getc et getwc)Read character from stream (function versions of getc and getwc)
_fgetchar, _fgetwchar_fgetchar, _fgetwchar Lire un caractère à partir de stdin (versions fonction de getchar et getwchar)Read character from stdin (function versions of getchar and getwchar)
fgetposfgetpos Obtenir l'indicateur de position du fluxGet position indicator of stream
fgets, fgetwsfgets, fgetws Lire une chaîne du fluxRead string from stream
_fileno_fileno Obtenir le descripteur de fichier associé au fluxGet file descriptor associated with stream
_flushall_flushall Vider tous les flux dans une mémoire tampon ou un dispositif de stockageFlush all streams to buffer or storage device
fopen, _wfopen, fopen_s, _wfopen_sfopen, _wfopen, fopen_s, _wfopen_s Ouvrir un fluxOpen stream
fprintf, _fprintf_l, fwprintf, _fwprintf_l, fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_lfprintf, _fprintf_l, fwprintf, _fwprintf_l, fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l Écrire des données mises en forme dans le fluxWrite formatted data to stream
fputc, fputwcfputc, fputwc Écrire un caractère dans un flux (versions fonction de putc et putwc)Write a character to a stream (function versions of putc and putwc)
_fputchar, _fputwchar_fputchar, _fputwchar Écrire un caractère dans stdout (versions fonction de putchar et putwchar)Write character to stdout (function versions of putchar and putwchar)
fputs, fputwsfputs, fputws Écrire une chaîne dans le fluxWrite string to stream
freadfread Lire des données non mises en forme dans le fluxRead unformatted data from stream
freopen, _wfreopen, freopen_s, _wfreopen_sfreopen, _wfreopen, freopen_s, _wfreopen_s Réaffecter le pointeur de flux FILE à un nouveau fichier ou périphériqueReassign FILE stream pointer to new file or device
fscanf, fwscanf, fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_lfscanf, fwscanf, fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l Lire les données mises en forme du fluxRead formatted data from stream
fseek, _fseeki64fseek, _fseeki64 Déplacer la position d'un fichier vers un emplacement donnéMove file position to given location
fsetposfsetpos Définir l'indicateur de position du fluxSet position indicator of stream
_fsopen, _wfsopen_fsopen, _wfsopen Ouvrir le flux avec le partage de fichiersOpen stream with file sharing
ftell, _ftelli64ftell, _ftelli64 Obtenir la position actuelle d'un fichierGet current file position
fwritefwrite Écrire des éléments de données non mis en forme dans le fluxWrite unformatted data items to stream
getc, getwcgetc, getwc Lire un caractère dans le flux (versions macro de fgetc et fgetwc)Read character from stream (macro versions of fgetc and fgetwc)
getchar, getwchargetchar, getwchar Lire un caractère à partir de stdin (versions macro de fgetchar et fgetwchar)Read character from stdin (macro versions of fgetchar and fgetwchar)
_getmaxstdio_getmaxstdio Retourner le nombre autorisé de fichiers ouverts simultanément au niveau de l'E/S du fluxReturns the number of simultaneously open files permitted at the stream I/O level.
gets_s, _getws_sgets_s, _getws_s Lire une ligne à partir de stdinRead line from stdin
_getw_getw Lire un int binaire dans le fluxRead binary int from stream
printf, _printf_l, wprintf, _wprintf_l,printf_s, _printf_s_l, wprintf_s, _wprintf_s_lprintf, _printf_l, wprintf, _wprintf_l,printf_s, _printf_s_l, wprintf_s, _wprintf_s_l Écrire des données mises en forme dans stdoutWrite formatted data to stdout
putc, putwcputc, putwc Écrire un caractère dans un flux (versions macro de fputc et fputwc)Write character to a stream (macro versions of fputc and fputwc)
putchar, putwcharputchar, putwchar Écrire un caractère dans stdout (versions macro de fputchar et fputwchar)Write character to stdout (macro versions of fputchar and fputwchar)
puts, _putwsputs, _putws Écrire une ligne dans le fluxWrite line to stream
_putw_putw Écrire un int binaire dans le fluxWrite binary int to stream
rewindrewind Déplacer la position d'un fichier au début du fluxMove file position to beginning of stream
_rmtmp_rmtmp Supprimer les fichiers temporaires créés par tmpfileRemove temporary files created by tmpfile
scanf, _scanf_l, wscanf, _wscanf_l,scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_lscanf, _scanf_l, wscanf, _wscanf_l,scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l Lire les données mises en forme d’un stdinRead formatted data from stdin
setbufsetbuf Contrôler la mise en mémoire tampon du fluxControl stream buffering
_setmaxstdio_setmaxstdio Définir un nombre maximal de fichiers ouverts simultanément au niveau de l'E/S du fluxSet a maximum for the number of simultaneously open files at the stream I/O level.
setvbufsetvbuf Contrôler la mise en mémoire tampon du flux et la taille de la mémoire tamponControl stream buffering and buffer size
_snprintf, _snwprintf, _snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l_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îneWrite formatted data of specified length to string
_snscanf, _snwscanf, _snscanf_s, _snscanf_s_l, _snwscanf_s, _snwscanf_s_l_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 standardRead formatted data of a specified length from the standard input stream.
sprintf, swprintf, sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_lsprintf, swprintf, sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l Écrire des données mises en forme dans une chaîneWrite formatted data to string
sscanf, swscanf, sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_lsscanf, swscanf, sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l Lire les données mises en forme d'une chaîneRead formatted data from string
_tempnam, _wtempnam_tempnam, _wtempnam Générer un nom de fichier temporaire dans un répertoire donnéGenerate temporary filename in given directory
tmpfile, tmpfile_stmpfile, tmpfile_s Créer un fichier temporaireCreate temporary file
tmpnam, _wtmpnam, tmpnam_s, _wtmpnam_stmpnam, _wtmpnam, tmpnam_s, _wtmpnam_s Générer un nom de fichier temporaireGenerate temporary filename
ungetc, ungetwcungetc, ungetwc Remettre un caractère dans le fluxPush character back onto stream
_vcprintf, _vcwprintf, _vcprintf_s, _vcprintf_s_l, _vcwprintf_s, _vcwprintf_s_l_vcprintf, _vcwprintf, _vcprintf_s, _vcprintf_s_l, _vcwprintf_s, _vcwprintf_s_l Écrire des données mises en forme dans la consoleWrite formatted data to the console.
vfprintf, vfwprintf, vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_lvfprintf, vfwprintf, vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l Écrire des données mises en forme dans le fluxWrite formatted data to stream
vprintf, vwprintf, vprintf_s, _vprintf_s_l, vwprintf_s, _vwprintf_s_lvprintf, vwprintf, vprintf_s, _vprintf_s_l, vwprintf_s, _vwprintf_s_l Écrire des données mises en forme dans stdoutWrite formatted data to stdout
_vsnprintf, _vsnwprintf, vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l_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 tamponWrite formatted data of specified length to buffer
vsprintf, vswprintf, vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_lvsprintf, vswprintf, vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l Écrire des données mises en forme dans la mémoire tamponWrite formatted data to buffer

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).When a program begins execution, the startup code automatically opens several streams: standard input (pointed to by stdin), standard output (pointed to by stdout), and standard error (pointed to by stderr). Par défaut, ces flux sont dirigés vers la console (clavier et écran).These streams are directed to the console (keyboard and screen) by default. Utilisez freopen pour rediriger stdin, stdout ou stderr vers un fichier sur disque ou un périphérique.Use freopen to redirect stdin, stdout, or stderr to a disk file or a device.

Par défaut, les fichiers ouverts à l'aide des routines de flux sont mis en mémoire tampon.Files opened using the stream routines are buffered by default. Les fonctions stdout et stderr sont vidées chaque fois qu’elles sont pleines ou, si vous écrivez dans un périphérique d’entrée-sortie de caractères, après chaque appel de bibliothèque.The stdout and stderr functions are flushed whenever they are full or, if you are writing to a character device, after each library call. 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.If a program terminates abnormally, output buffers may not be flushed, resulting in loss of data. Utilisez fflush ou _flushall pour faire en sorte que la mémoire tampon associée à un fichier spécifié ou toutes les mémoires tampons soient vidées sur le système d’exploitation, qui peut mettre les données en cache avant de les écrire sur disque.Use fflush or _flushall to ensure that the buffer associated with a specified file or all open buffers are flushed to the operating system, which can cache data before writing it to disk. La fonctionnalité de validation sur disque garantit que le contenu de mémoire tampon vidé n'est pas perdu en cas de défaillance du système.The commit-to-disk feature ensures that the flushed buffer contents are not lost in the event of a system failure.

Il existe deux façons de valider le contenu de mémoire tampon sur disque :There are two ways to commit buffer contents to disk:

  • Créer un lien avec le fichier COMMODE.OBJ pour définir un indicateur de validation global.Link with the file COMMODE.OBJ to set a global commit flag. Le paramètre par défaut de l’indicateur global est n, pour « no-commit » (pas de validation).The default setting of the global flag is n, for "no-commit."

  • Définir l’indicateur de mode sur c avec fopen ou _fdopen.Set the mode flag to c with fopen or _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 »).Any file specifically opened with either the c or the n flag behaves according to the flag, regardless of the state of the global commit/no-commit flag.

Si votre programme ne ferme pas explicitement un flux, le flux est fermé automatiquement quand le programme se termine.If your program does not explicitly close a stream, the stream is automatically closed when the program terminates. 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é.However, you should close a stream when your program finishes with it, as the number of streams that can be open at one time is limited. Pour plus d'informations sur cette limite, consultez _setmaxstdio .See _setmaxstdio for information on this limit.

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).Input can follow output directly only with an intervening call to fflush or to a file-positioning function (fseek, fsetpos, or rewind). Une sortie peut suivre une entrée sans appel intermédiaire à une fonction de positionnement de fichier si l'opération d'entrée rencontre la fin du fichier.Output can follow input without an intervening call to a file-positioning function if the input operation encounters the end of the file.

Voir aussiSee also

Entrée et sortieInput and Output
Routines du runtime C universel par catégorieUniversal C runtime routines by category