Función de biblioteca C - fsetpos ()

Descripción

La función de la biblioteca C int fsetpos(FILE *stream, const fpos_t *pos) establece la posición del archivo del dado streama la posición dada. El argumentopos es una posición dada por la función fgetpos.

Declaración

A continuación se muestra la declaración de la función fsetpos ().

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

Parámetros

  • stream - Este es el puntero a un objeto FILE que identifica la secuencia.

  • pos - Este es el puntero a un objeto fpos_t que contiene una posición obtenida previamente con fgetpos.

Valor devuelto

Esta función devuelve un valor cero si tiene éxito, o de lo contrario devuelve un valor distinto de cero y establece la variable global errno a un valor positivo, que puede interpretarse con perror.

Ejemplo

El siguiente ejemplo muestra el uso de la función 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);
}

Compilemos y ejecutemos el programa anterior para crear un archivo file.txtque tendrá el siguiente contenido. En primer lugar, obtenemos la posición inicial del archivo usandofgetpos()función, y luego escribimos ¡Hola, mundo! en el archivo pero luego usamosfsetpos() función para restablecer el puntero de escritura al principio del archivo y luego sobrescribir el archivo con el siguiente contenido:

This is going to override previous content

Ahora veamos el contenido del archivo anterior usando el siguiente programa:

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

Compilemos y ejecutemos el programa anterior para producir el siguiente resultado:

This is going to override previous content