Fonction de bibliothèque C - freopen ()

La description

La fonction de bibliothèque C FILE *freopen(const char *filename, const char *mode, FILE *stream) associe un nouveau filename avec le flux ouvert donné et ferme en même temps l'ancien fichier dans le flux.

Déclaration

Voici la déclaration de la fonction freopen ().

FILE *freopen(const char *filename, const char *mode, FILE *stream)

Paramètres

  • filename - Il s'agit de la chaîne C contenant le nom du fichier à ouvrir.

  • mode- C'est la chaîne C contenant un mode d'accès aux fichiers. Il comprend -

N ° Sr. Mode et description
1

"r"

Ouvre un fichier en lecture. Le fichier doit exister.

2

"w"

Crée un fichier vide pour l'écriture. Si un fichier du même nom existe déjà, son contenu est effacé et le fichier est considéré comme un nouveau fichier vide.

3

"a"

Ajoute à un fichier. Les opérations d'écriture ajoutent des données à la fin du fichier. Le fichier est créé s'il n'existe pas.

4

"r+"

Ouvre un fichier pour mettre à jour la lecture et l'écriture. Le fichier doit exister.

5

"w+"

Crée un fichier vide pour la lecture et l'écriture.

6

"a+"

Ouvre un fichier pour lecture et ajout.

  • stream - Il s'agit du pointeur vers un objet FILE qui identifie le flux à rouvrir.

Valeur de retour

Si le fichier a été rouvert avec succès, la fonction renvoie un pointeur vers un objet identifiant le flux ou bien, un pointeur nul est renvoyé.

Exemple

L'exemple suivant montre l'utilisation de la fonction freopen ().

#include <stdio.h>

int main () {
   FILE *fp;

   printf("This text is redirected to stdout\n");

   fp = freopen("file.txt", "w+", stdout);

   printf("This text is redirected to file.txt\n");

   fclose(fp);
   
   return(0);
}

Compilons et exécutons le programme ci-dessus qui enverra la ligne suivante à STDOUT car initialement nous n'avons pas ouvert stdout -

This text is redirected to stdout

Après un appel à freopen(), il associe STDOUT au fichier file.txt, donc tout ce que nous écrivons à STDOUT qui entre à l'intérieur file.txt. Alors, le fichierfile.txt aura le contenu suivant.

This text is redirected to file.txt

Voyons maintenant le contenu du fichier ci-dessus en utilisant le programme suivant -

#include <stdio.h>

int main () {
   FILE *fp;
   int c;

   fp = fopen("file.txt","r");
   while(1) {
      c = fgetc(fp);
      if( feof(fp) ) {
         break ;
      }
      printf("%c", c);
   }
   fclose(fp);
   return(0);
}