Partager via


freopen, _wfreopen

Réattribue un pointeur de fichier. Des versions plus sécurisées de ces fonctions sont disponibles ; consultez freopen_s, _wfreopen_s.

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

Paramètres

  • path
    Chemin d'accès du nouveau fichier.

  • mode
    Type d'accès autorisé.

  • stream
    Pointeur vers la structure FILE.

Valeur de retour

Chacune de ces fonctions retourne un pointeur vers le fichier nouvellement ouvert. Si une erreur se produit, le fichier d'origine est fermé et que la fonction retourne une valeur de pointeur NULL. Si path, mode ou stream est un pointeur null ou si filename est une chaîne vide, ces fonctions appellent le gestionnaire de paramètre non valide, décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, ces fonctions définissent errno à la valeur EINVAL et retournent NULL.

Consultez _doserrno, errno, _sys_errlist et _sys_nerr pour plus d'informations sur ces éléments et autres codes d'erreur.

Notes

Des versions plus sécurisées de ces fonctions existent, consultez freopen_s, _wfreopen_s.

La fonction freopen ferme le fichier actuellement associé à stream et réaffecte stream au fichier spécifié par path ._wfreopenest une version à caractère élargi de _freopen; Les arguments path et mode pour _wfreopen sont des chaînes à caractères larges. _wfreopen et _freopen se comportent sinon de manière identique.

Mappages de routines de texte générique

Routine TCHAR.H

_UNICODE & _MBCS non définis

_MBCS défini

_UNICODE défini

_tfreopen

freopen

freopen

_wfreopen

freopen est généralement utilisé pour rediriger les fichiers préalablement ouverts, stdin, stdoutet stderr aux fichiers spécifiés par l'utilisateur. Le nouveau fichier associé à stream s'ouvre avec mode*,* qui est une chaîne de caractères spécifiant le type d'accès demandé pour le fichier, comme suit :

  • "r"
    Ouvre pour l'accès en lecture. Si le fichier n'existe pas ou est introuvable, l'appel de freopen échoue.

  • "w"
    Ouvre un fichier vide pour l'accès en écriture. Si le fichier spécifié existe, son contenu est détruit.

  • "a"
    S'ouvre pour écrire à la fin du fichier (Ajouter) sans supprimer marqueur EOF avant d'entrer de nouvelles données dans le fichier ; crée d'abord le fichier s'il n'existe pas.

  • "r+"
    Ouvre pour l'accès en lecture et en écriture. (Le fichier doit exister.)

  • "w+"
    Ouvre un fichier vide pour l'accès en lecture et en écriture. Si le fichier spécifié existe, son contenu est détruit.

  • "a+"
    S'ouvre pour lire et ajouter ; l'opération de ajout inclut la suppression de marqueur EOF avant la nouvelle donnée soit écrite dans le fichier et marqueur EOF est restauré une fois que l'écriture terminée ; crée d'abord le fichier s'il n'existe pas.

Utilisez les types "w" et "w+" avec précaution, car ils peuvent détruire des fichiers existants.

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. Même si le pointeur de fichier peut être repositionné à l'aide de fseek ou de rewind, mais il est toujours remis à la fin du fichier avant qu'aucune opération d'écriture ne soit exécutée. Par conséquent, les données existantes ne peuvent être remplacées.

Le mode "a" ne supprime pas le marqueur EOF avant de faire des ajouts au fichier. Après que la phase d'ajouts se soit déroulée, la commande MS-DOS TYPE montre uniquement les données jusqu'au marqueur EOF d'origine et non toutes les données ajoutées au fichier. Le mode "a+" ne supprime pas le marqueur EOF avant de faire des ajouts au fichier. Après l'ajout, la commande MS-DOS TYPE affiche toutes les données du fichier. Le mode "a+" est obligatoire pour faire des ajouts à un fichier de flux qui est terminé à l'aide du marqueur EOF CTRL+Z.

Lorsque le "r+", "w+", ou le type d'accès "a+" est spécifié, il autorise à la fois la lecture et l'écriture (le fichier est dit ouvert pour la valeur « mise à jour »). Toutefois, lorsque vous basculez entre la lecture et l'écriture, il doit y avoir une intervention de fsetpos, fseek, ou une opération de rembobinage. La position actuelle peut être spécifiée pour une opération fsetpos ou de fseek, le cas échéant. Outre les valeurs ci-dessus, l'un des caractères suivants peut être inclus dans la chaîne mode pour spécifier le mode de traduction pour les nouvelles lignes.

  • t
    Ouvrir dans le mode de texte (traduit) ; des combinaisons de saut de ligne-retour de chariot (CR-LF) sont traduites en caractères uniques de (LF) de saut de ligne à l'entrée ; Les caractères de saut de ligne sont traduits aux combinaisons de CR-LF sur la sortie. En outre, CTRL+Z est interprété comme caractère de fin de fichier sur l'entrée. Dans les fichiers ouverts en lecture ou en écriture et lecture avec "a+", la bibliothèque Runtime vérifie un CTRL+Z à la fin du fichier et le supprime, si possible. Cela est effectué grâce à l'utilisation de fseek et de ftell pour se déplacer à l'intérieur d'un fichier peut entraîner un comportement incorrect de fseek vers la fin du fichier. L'option t est une extension Microsoft qui ne doit pas être utilisée lorsqu'une portabilité ANSI est souhaitée.

  • b
    Basculez en mode (non traduit) binaire ; les traductions ci-dessus sont supprimées.

Si t ou b n'est pas donné dans mode, le mode de traduction par défaut est défini par la variable globale _fmode. Si t ou b a l'argument comme préfixe, la fonction échoue et retourne NULL.

Pour une discussion des modes de texte et binaire, consultez E/S de fichier du mode de texte et binaire.

Configuration requise

Fonction

En-tête requis

freopen

<stdio.h>

_wfreopen

<stdio.h> ou <wchar.h>

La console n'est pas prise en charge dans les applications Windows Store . Les handles de flux standard associés à la console, stdin, stdout et stderr doivent être redirigés pour que les fonctions runtime C puissent les utiliser dans les applications Windows Store . Pour plus d'informations sur la compatibilité, consultez Compatibilité.

Exemple

// 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" );
}
  

Équivalent .NET Framework

Voir aussi

Référence

E/S de flux

fclose, _fcloseall

_fdopen, _wfdopen

_fileno

fopen, _wfopen

_open, _wopen

_setmode