freopen, _wfreopenfreopen, _wfreopen

Réaffecte un pointeur de fichier.Reassigns a file pointer. Des versions plus sécurisées de ces fonctions sont disponibles ; consultez freopen_s, _wfreopen_s.More secure versions of these functions are available; see freopen_s, _wfreopen_s.

SyntaxeSyntax

FILE *freopen(
   const char *path,
   const char *mode,
   FILE *stream
);
FILE *_wfreopen(
   const wchar_t *path,
   const wchar_t *mode,
   FILE *stream
);

ParamètresParameters

pathpath
Chemin d’accès du nouveau fichier.Path of new file.

modemode
Type d'accès autorisé.Type of access permitted.

streamstream
Pointeur désignant la structure FILE.Pointer to FILE structure.

Valeur de retourReturn Value

Chacune de ces fonctions retourne un pointeur vers le fichier qui vient d'être ouvert.Each of these functions returns a pointer to the newly opened file. Si une erreur se produit, le fichier d’origine est fermé et la fonction retourne une valeur de pointeur null .If an error occurs, the original file is closed and the function returns a NULL pointer value. Si path, modeou Stream est un pointeur null, ou si filename est une chaîne vide, ces fonctions appellent le gestionnaire de paramètres non valides, comme décrit dans validation de paramètre.If path, mode, or stream is a null pointer, or if filename is an empty string, these functions invoke the invalid parameter handler, as described in Parameter Validation. Si l’exécution est autorisée à se poursuivre, ces fonctions attribuent à errno la valeur EINVAL et retournent la valeur null.If execution is allowed to continue, these functions set errno to EINVAL and return NULL.

Pour plus d’informations sur ces codes d’erreur et les autres, consultez _doserrno, errno, _sys_errlist et _sys_nerr.See _doserrno, errno, _sys_errlist, and _sys_nerr for more information on these, and other, error codes.

NotesRemarks

Il existe des versions plus sécurisées de ces fonctions ; consultez freopen_s, _wfreopen_s.More secure versions of these functions exist, see freopen_s, _wfreopen_s.

La fonction freopen ferme le fichier actuellement associé au flux et réaffecte le flux au fichier spécifié par le chemin d’accès.The freopen function closes the file currently associated with stream and reassigns stream to the file specified by path. _wfreopen est une version à caractères larges de _freopen; les arguments path et mode de _wfreopen sont des chaînes à caractères larges._wfreopen is a wide-character version of _freopen; the path and mode arguments to _wfreopen are wide-character strings. dans le cas contraire, _wfreopen et _freopen se comportent de la même façon._wfreopen and _freopen behave identically otherwise.

Mappages de routines de texte génériqueGeneric-Text Routine Mappings

Routine TCHAR.HTCHAR.H routine _UNICODE et _MBCS non définis_UNICODE & _MBCS not defined _MBCS défini_MBCS defined _UNICODE défini_UNICODE defined
_tfreopen_tfreopen freopenfreopen freopenfreopen _wfreopen_wfreopen

freopen est généralement utilisé pour rediriger les fichiers stdin, stdoutet stderr des fichiers préalablement ouverts vers des fichiers spécifiés par l’utilisateur.freopen is typically used to redirect the pre-opened files stdin, stdout, and stderr to files specified by the user. Le nouveau fichier associé à Stream est ouvert en mode, qui est une chaîne de caractères spécifiant le type d’accès demandé pour le fichier, comme suit:The new file associated with stream is opened with mode, which is a character string specifying the type of access requested for the file, as follows:

modemode AccessAccess
"r""r" Ouvre pour l'accès en lecture.Opens for reading. Si le fichier n’existe pas ou est introuvable, l’appel freopen échoue.If the file does not exist or cannot be found, the freopen call fails.
"w""w" Ouvre un fichier vide pour l'accès en écriture.Opens an empty file for writing. Si le fichier spécifié existe, son contenu est détruit.If the given file exists, its contents are destroyed.
"a""a" S'ouvre pour écriture à la fin du fichier (ajout) sans supprimer le marqueur de fin de fichier (EOF) avant que de nouvelles données soient écrites dans le fichier.Opens for writing at the end of the file (appending) without removing the end-of-file (EOF) marker before new data is written to the file. Crée le fichier s'il n'existe pas.Creates the file if it does not exist.
"r+""r+" Ouvre pour l'accès en lecture et en écriture.Opens for both reading and writing. Le fichier doit exister.The file must exist.
"w+""w+" Ouvre un fichier vide pour l'accès en lecture et en écriture.Opens an empty file for both reading and writing. Si le fichier existe, son contenu est détruit.If the file exists, its contents are destroyed.
"a+""a+" S'ouvre pour lecture et ajout.Opens for reading and appending. L'opération d'ajout inclut la suppression du marqueur EOF avant que de nouvelles données soient écrites dans le fichier.The appending operation includes the removal of the EOF marker before new data is written to the file. Le marqueur EOF n'est pas restauré une fois l'écriture terminée.The EOF marker is not restored after writing is completed. Crée le fichier s'il n'existe pas.Creates the file if it does not exist.

Utilisez les types «w» et «w +» avec précaution, car ils peuvent détruire les fichiers existants.Use the "w" and "w+" types with care, as they can destroy existing files.

Lorsqu’un fichier est ouvert avec le type d’accès «a» ou «a +» , toutes les opérations d’écriture se produisent à la fin du fichier.When a file is opened with the "a" or "a+" access type, all write operations take place at the end of the file. Même si le pointeur de fichier peut être repositionné à l’aide de fseek ou rembobiner, le pointeur de fichier est toujours redéplacé à la fin du fichier avant toute opération d’écriture. Par conséquent, les données existantes ne peuvent pas être remplacées.Although the file pointer can be repositioned using fseek or rewind, the file pointer is always moved back to the end of the file before any write operation is carried out. Thus, existing data cannot be overwritten.

Le mode «a» ne supprime pas le marqueur EOF avant l’ajout au fichier.The "a" mode does not remove the EOF marker before appending to the file. Après l'ajout, la commande MS-DOS TYPE affiche uniquement les données jusqu'au marqueur EOF d'origine, et non les données ajoutées au fichier.After appending has occurred, the MS-DOS TYPE command only shows data up to the original EOF marker and not any data appended to the file. Le mode «a +» supprime le marqueur EOF avant d’ajouter au fichier.The "a+" mode does remove the EOF marker before appending to the file. Après l'ajout, la commande MS-DOS TYPE affiche toutes les données du fichier.After appending, the MS-DOS TYPE command shows all data in the file. Le mode «a +» est requis pour l’ajout à un fichier de flux qui se termine par le marqueur EOF Ctrl + Z.The "a+" mode is required for appending to a stream file that is terminated with the CTRL+Z EOF marker.

Quand le type d’accès "r +" , "w +" ou "a +" est spécifié, la lecture et l’écriture sont autorisées (le fichier est dit ouvert pour "mettre à jour").When the "r+", "w+", or "a+" access type is specified, both reading and writing are allowed (the file is said to be open for "update"). Cependant, quand vous basculez entre lecture et écriture, une opération intermédiaire fsetpos, fseek ou rewind doit exister.However, when you switch between reading and writing, there must be an intervening fsetpos, fseek, or rewind operation. La position actuelle peut être spécifiée pour l’opération fsetpos ou fseek , si vous le souhaitez.The current position can be specified for the fsetpos or fseek operation, if desired. Outre les valeurs ci-dessus, l’un des caractères suivants peut être inclus dans la chaîne de mode pour spécifier le mode de traduction pour les nouvelles lignes.In addition to the above values, one of the following characters may be included in the mode string to specify the translation mode for new lines.

modificateur de modemode modifier Mode de traductionTranslation mode
tt Ouvrir en mode texte (traduit).Open in text (translated) mode.
bb Ouvrir en mode binaire (non traduit); les traductions qui impliquent des caractères de retour chariot et de saut de ligne sont supprimées.Open in binary (untranslated) mode; translations involving carriage-return and line feed characters are suppressed.

En mode texte (traduit), les combinaisons retour chariot-saut de ligne sont traduites en caractères de saut de ligne unique (LF) à l’entrée; Les caractères de saut de ligne sont traduits en combinaisons CR-LF en sortie.In text (translated) mode, carriage return-line feed (CR-LF) combinations are translated into single line feed (LF) characters on input; LF characters are translated to CR-LF combinations on output. De même, Ctrl+Z est interprété comme un caractère de fin de fichier en entrée.Also, CTRL+Z is interpreted as an end-of-file character on input. Dans les fichiers ouverts en lecture ou pour l’écriture et la lecture avec «a +» , la bibliothèque Runtime recherche un Ctrl + Z à la fin du fichier et le supprime, si possible.In files opened for reading or for writing and reading with "a+", the run-time library checks for a CTRL+Z at the end of the file and removes it, if possible. Cela est dû au fait que l’utilisation de fseek et ftell pour se déplacer dans un fichier peut entraîner un comportement incorrect de fseek vers la fin du fichier.This is done because using fseek and ftell to move within a file may cause fseek to behave improperly near the end of the file. L’option t est une extension Microsoft qui ne doit pas être utilisée là où la portabilité ANSI est souhaitée.The t option is a Microsoft extension that should not be used where ANSI portability is desired.

Si t ou b n’est pas spécifié en mode, le mode de traduction par défaut est défini par la variable globale _fmode.If t or b is not given in mode, the default translation mode is defined by the global variable _fmode. Si t ou b est préfixé à l’argument, la fonction échoue et retourne la valeur null.If t or b is prefixed to the argument, the function fails and returns NULL.

Pour en savoir plus sur les modes texte et binaire, consultez E/S de fichier en mode texte et binaire.For a discussion of text and binary modes, see Text and Binary Mode File I/O.

Configuration requiseRequirements

FonctionFunction En-tête requisRequired header
freopenfreopen <stdio.h><stdio.h>
_wfreopen_wfreopen <stdio.h> ou <wchar.h><stdio.h> or <wchar.h>

La console n’est pas prise en charge dans les applications de plateforme Windows universelle (UWP).The console is not supported in Universal Windows Platform (UWP) apps. Les handles de flux standard associés à la console, stdin, stdoutet stderr, doivent être redirigés pour que les fonctions runtime C puissent les utiliser dans les applications UWP.The standard stream handles that are associated with the console, stdin, stdout, and stderr, must be redirected before C run-time functions can use them in UWP apps. Pour plus d'informations sur la compatibilité, voir Compatibilité.For additional compatibility information, see Compatibility.

ExemplesExample

// crt_freopen.c
// compile with: /W3
// This program reassigns stderr to the file
// named FREOPEN.OUT and writes a line to that file.
#include <stdio.h>
#include <stdlib.h>

FILE *stream;

int main( void )
{
   // Reassign "stderr" to "freopen.out":
   stream = freopen( "freopen.out", "w", stderr ); // C4996
   // Note: freopen is deprecated; consider using freopen_s instead

   if( stream == NULL )
      fprintf( stdout, "error on freopen\n" );
   else
   {
      fprintf( stdout, "successfully reassigned\n" ); fflush( stdout );
      fprintf( stream, "This will go to the file 'freopen.out'\n" );
      fclose( stream );
   }
   system( "type freopen.out" );
}
successfully reassigned
This will go to the file 'freopen.out'

Voir aussiSee also

E/S de fluxStream I/O
fclose, _fcloseallfclose, _fcloseall
_fdopen, _wfdopen_fdopen, _wfdopen
_fileno_fileno
fopen, _wfopenfopen, _wfopen
_open, _wopen_open, _wopen
_setmode_setmode