Funzione libreria C - fsetpos ()

Descrizione

La funzione di libreria C. int fsetpos(FILE *stream, const fpos_t *pos) imposta la posizione del file del dato streamalla posizione data. L'argomentopos è una posizione data dalla funzione fgetpos.

Dichiarazione

Di seguito è riportata la dichiarazione per la funzione fsetpos ().

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

Parametri

  • stream - Questo è il puntatore a un oggetto FILE che identifica il flusso.

  • pos - Questo è il puntatore a un oggetto fpos_t contenente una posizione precedentemente ottenuta con fgetpos.

Valore di ritorno

Questa funzione restituisce un valore zero in caso di successo, oppure restituisce un valore diverso da zero e imposta la variabile globale errno a un valore positivo, che può essere interpretato con perror.

Esempio

L'esempio seguente mostra l'utilizzo della funzione 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);
}

Compiliamo ed eseguiamo il programma sopra per creare un file file.txtche avrà il seguente contenuto. Prima di tutto otteniamo la posizione iniziale del file utilizzandofgetpos()e poi scriviamo Hello, World! nel file ma successivamente abbiamo usatofsetpos() funzione per ripristinare il puntatore di scrittura all'inizio del file e quindi sovrascrivere il file con il seguente contenuto:

This is going to override previous content

Vediamo ora il contenuto del file sopra utilizzando il seguente programma:

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

Compiliamo ed eseguiamo il programma sopra per produrre il seguente risultato:

This is going to override previous content