std:: freopen
|
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
|
|