freopen, _wfreopen
Réassignez un pointeur de fichier.Les versions 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 de fichier.mode
Type d'accès autorisé.stream
Pointeur vers la structure d' FILE .
Valeur de retour
Chacune de ces fonctions retourne un pointeur vers le fichier récemment ouvert.Si une erreur se produit, le fichier d'origine est fermé et les la fonction retourne une valeur de pointeur d' NULL .Si path, mode, ou stream est un pointeur null, ou si filename est une chaîne vide, ces fonctions appelle le gestionnaire de paramètre non valide, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution pour continuer, ces errno défini par fonctions à EINVAL et à NULLde retour.
Consultez _doserrno, errno, _sys_errlist, et _sys_nerr pour plus d'informations sur ces éléments, et autres, les codes d'erreur.
Notes
Les versions sécurisées de ces fonctions existent, consultez freopen_s, _wfreopen_s.
La fonction d' freopen ferme le fichier actuellement associées à stream et réaffecte stream au fichier spécifié par path*.*_wfreopen est une version à caractère élargi d' _freopen; les arguments d' path et d' mode à _wfreopen sont des chaînes à caractères larges._wfreopen et _freopen se comportent de sinon.
Mappages de routines de texte générique
Routine de TCHAR.H |
_UNICODE et non définis _MBCS |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_tfreopen |
freopen |
freopen |
_wfreopen |
freopen est généralement utilisé pour rediriger les fichiers préalable ouverts stdin, stdout, et stderr aux fichiers spécifiés par l'utilisateur.Le nouveau fichier associé à stream s'ouvre avec mode*,* qui est une chaîne spécifiant le type d'accès demandé pour le fichier, comme suit :
"r"
S'ouvre pour la lecture.Si le fichier n'existe pas ou est introuvable, l'appel d' freopen échoue."w"
Ouvre un fichier vide pour écrire.Si le fichier spécifié existe, son contenu est détruit."a"
S'ouvre pour écrire à la fin de le fichier (ajouter) sans supprimer marqueur EOF avant d'entrer de nouvelles données vers le fichier ; crée le fichier d'abord s'il n'existe pas."r+"
S'ouvre pour la lecture et l'écriture.(Le fichier doit exister.)"w+"
Ouvre un fichier vide pour la lecture et l'écriture.Si le fichier spécifié existe, son contenu est détruit."a+"
S'ouvre pour lire et ajouter ; l'opération d'ajout inclut la suppression de marqueur EOF avant de nouvelles données sont écrites dans le fichier et marqueur EOF est restauré une fois que l'écriture terminé ; crée le fichier d'abord s'il n'existe pas.
Utilisez des types d' "w" et d' "w+" avec précaution, comme il peut détruire des fichiers existants.
Lorsqu'un fichier est ouvert au type d'accès d' "a" ou d' "a+", toutes les opérations d'écriture ont lieu à la fin de le fichier.Bien que le pointeur de fichier puisse être réadressé à l'aide de fseek ou rewind, le pointeur de fichier est toujours déplacé vers la fin du fichier avant qu'une opération d'écriture soit exécutée.Par conséquent, les données existantes ne peuvent pas être remplacées.
Le mode d' "a" ne supprime pas marqueur EOF avant d'ajouter vers le fichier.Après avoir ajouté s'est produit, le TYPE de commande MS-DOS affiche uniquement les données jusqu'à EOF marqueur d'origine et non les données ajoutées au fichier.Le mode d' "a+" supprime marqueur EOF avant d'ajouter vers le fichier.Après avoir ajouté, le TYPE de commande MS-DOS affiche toutes les données dans le fichier.Le mode d' "a+" est requis pour ajouter à un fichier de flux qui a fini CTRL+Z le marqueur EOF.
Lorsque "r+", "w+", ou le type d'accès d' "a+" est spécifié, il permet la lecture et l'écriture (le fichier est dit ouvert pour « update »).Toutefois, lorsque vous basculez entre la lecture et l'écriture, il doit y avoir fsetposintervenant, fseek, ou opération d' rebobinage .La position actuelle peut être spécifiée pour l'exécution d' fsetpos ou d' fseek, si vous le souhaitez.Outre les valeurs ci-dessus, l'un des caractères suivants peuvent être inclus dans la chaîne d' mode pour spécifier un en mode de traduction pour les nouvelles lignes.
t
Ouvrez en mode de texte (traduits) ; les combinaisons de saut de ligne-retour de chariot (CR-LF) sont traduites en caractères unique de (LF) de saut de ligne sur 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ète comme un caractère de fin de fichier sur l'entrée.Dans les fichiers ouverts pour lire ou d'écrire et lire à "a+", la bibliothèque Runtime vérifie un CTRL+Z à la fin de le fichier et le supprime, si possible.Cette opération est exécutée car l'utilisation d' fseek et d' ftell pour déplacer dans un fichier peut être comporter fseek incorrectement près de la fin de le fichier.L'option d' t est une extension Microsoft qui ne doit pas être utilisée lorsque la portabilité ANSI est souhaitée.b
Ouvrez en mode (non traduit) binaire ; les traductions ci-dessus sont supprimées.
Si t ou b n'est pas donné dans mode, à l'état de interprétation par défaut est défini par la variable globale _fmode.Si t ou b est préfixé à l'argument, la fonction échoue et retourne NULL.
Pour en savoir plus sur les modes de texte et binaire, consultez l' 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 d' Windows Store .Les handles standard de flux de données associés à la console, stdin, stdout, et stderr, doivent être redirigés pour que les fonctions runtime C peuvent les utiliser dans des applications d' Windows Store .Pour des informations de compatibilité supplémentaires, consultez l' Compatibilité dans l'introduction.
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
System::IO::FileStream::FileStream