Namespaces
Variants

std:: freopen

From cppreference.net
< cpp ‎ | io ‎ | c
Défini dans l'en-tête <cstdio>
std:: FILE * freopen ( const char * filename, const char * mode, std:: FILE * stream ) ;

D'abord, tente de fermer le fichier associé au stream , en ignorant toute erreur. Ensuite, si filename n'est pas nul, tente d'ouvrir le fichier spécifié par filename en utilisant mode comme le ferait std::fopen , et associe ce fichier au flux de fichier pointé par stream . Si filename est un pointeur nul, alors la fonction tente de rouvrir le fichier déjà associé au stream (il est défini par l'implémentation quels changements de mode sont autorisés dans ce cas).

Table des matières

Paramètres

filename - nom de fichier à associer au flux de fichier
mode - chaîne de caractères terminée par un nul déterminant le nouveau mode d'accès au fichier
stream - le flux de fichier à modifier

Indicateurs d'accès aux fichiers

Chaîne de mode d'accès
au fichier
Signification Explication Action si le fichier
existe déjà
Action si le fichier
n'existe pas
"r" lecture Ouvrir un fichier en lecture lire depuis le début retourner NULL et définir une erreur
"w" écriture Créer un fichier en écriture détruire le contenu créer un nouveau
"a" ajout Ajouter à un fichier écrire à la fin créer un nouveau
"r+" lecture étendue Ouvrir un fichier en lecture/écriture lire depuis le début retourner NULL et définir une erreur
"w+" écriture étendue Créer un fichier en lecture/écriture détruire le contenu créer un nouveau
"a+" ajout étendu Ouvrir un fichier en lecture/écriture écrire à la fin créer un nouveau
Le drapeau de mode d'accès "b" peut être spécifié optionnellement pour ouvrir un fichier en mode binaire . Ce drapeau n'a aucun effet sur les systèmes POSIX, mais sous Windows par exemple, il désactive le traitement spécial de ' \n ' et ' \x1A ' .
Sur les modes d'accès en ajout, les données sont écrites à la fin du fichier indépendamment de la position courante de l'indicateur de position du fichier.
Le drapeau de mode d'accès "x" peut être ajouté optionnellement aux spécificateurs "w" ou "w+" . Ce drapeau force la fonction à échouer si le fichier existe, au lieu de l'écraser. (C++17)
Le comportement est indéfini si le mode n'est pas une des chaînes listées ci-dessus. Certaines implémentations définissent des modes supplémentaires pris en charge (par exemple Windows ).

Valeur de retour

stream en cas de succès, un pointeur nul en cas d'échec.

Notes

std::freopen est la seule manière de modifier l'orientation étroite/large d'un flux une fois qu'elle a été établie par une opération d'E/S ou par std::fwide .

La version Microsoft CRT de std::freopen ne prend en charge aucun changement de mode lorsque filename est un pointeur nul et considère cela comme une erreur (voir la documentation ). Une solution de contournement possible est la fonction non standard _setmode() .

Exemple

Le code suivant redirige stdout vers un fichier.

#include <cstdio>
int main()
{
    std::printf("stdout is printed to console\n");
    if (std::freopen("redir.txt", "w", stdout))
    {
        std::printf("stdout is redirected to a file\n"); // this is written to redir.txt
        std::fclose(stdout);
    }
}

Sortie :

stdout is printed to console

Voir aussi

ouvre un fichier
(fonction)
ferme un fichier
(fonction)
Documentation C pour freopen