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