Fonction de bibliothèque C - fsetpos ()

La description

La fonction de bibliothèque C int fsetpos(FILE *stream, const fpos_t *pos) définit la position du fichier de la donnée streamà la position donnée. L'argumentpos est une position donnée par la fonction fgetpos.

Déclaration

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

int fsetpos(FILE *stream, const fpos_t *pos)

Paramètres

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

  • pos - C'est le pointeur vers un objet fpos_t contenant une position précédemment obtenue avec fgetpos.

Valeur de retour

Cette fonction renvoie une valeur nulle en cas de succès, ou bien elle renvoie une valeur différente de zéro et définit la variable globale errno à une valeur positive, qui peut être interprétée avec perror.

Exemple

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

#include <stdio.h>

int main () {
   FILE *fp;
   fpos_t position;

   fp = fopen("file.txt","w+");
   fgetpos(fp, &position);
   fputs("Hello, World!", fp);
  
   fsetpos(fp, &position);
   fputs("This is going to override previous content", fp);
   fclose(fp);
   
   return(0);
}

Laissez-nous compiler et exécuter le programme ci-dessus pour créer un fichier file.txtqui aura le contenu suivant. Tout d'abord, nous obtenons la position initiale du fichier en utilisantfgetpos()fonction, puis nous écrivons Hello, World! dans le fichier mais plus tard, nous avons utiliséfsetpos() fonction pour réinitialiser le pointeur d'écriture au début du fichier, puis écraser le fichier avec le contenu suivant -

This is going to override previous content

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

Compilons et exécutons le programme ci-dessus pour produire le résultat suivant -

This is going to override previous content