La función fseek () en C ++ establece el indicador de posición de archivo para el flujo de archivo dado.
La función fseek () se define en el archivo de encabezado.
prototipo fseek ()
int fseek (ARCHIVO * flujo, desplazamiento largo, origen int);
Si el archivo se abre en modo binario, la nueva posición del puntero del archivo está exactamente desplazada en bytes desde el origen.
Si el archivo se abre en modo texto, los valores admitidos para el desplazamiento son:
- Cero: funciona con cualquier valor de origen, es decir, SEEK_SET, SEEK_CUR y SEEK_END.
- Valor devuelto por una llamada a ftell (stream): solo funciona con el origen de SEEK_SET.
Si el flujo es de orientación amplia, se aplican las restricciones de los flujos de texto y binarios, es decir, se permite el resultado de ftell con SEEK_SET y se permite el desplazamiento cero desde SEEK_SET y SEEK_CUR, pero no SEEK_END.
La función fseek también deshace los efectos de ungetc y borra el estado de fin de archivo, si corresponde.
Si se produce un error de lectura o escritura, se establece el error y la posición del archivo no se ve afectada.
Parámetros de fseek ()
- secuencia: la secuencia de archivos que se va a modificar.
- desplazamiento: el número de caracteres que se van a desplazar desde el origen.
- origen: Posición utilizada como referencia para agregar al desplazamiento. Puede tener los siguientes valores:
Valor | Descripción |
---|---|
SEEK_SET | Inicio de archivo |
SEEK_CUR | Posición actual del puntero de archivo |
SEEK_END | Fin del documento |
fseek () Valor de retorno
- En caso de éxito, la función fseek () devuelve cero, de lo contrario distinto de cero.
Ejemplo: ¿Cómo funciona la función fseek ()?
#include int main() ( FILE* fp = fopen("example.txt","w+"); char ch; fputs("Erica 25 Berlin", fp); rewind(fp); printf("Name: "); while((ch=fgetc(fp))!=' ') putchar(ch); putchar(''); printf("Age: "); fseek(fp,10,SEEK_SET); while((ch=fgetc(fp))!=' ') putchar(ch); putchar(''); printf("City: "); fseek(fp,15,SEEK_SET); while((ch=fgetc(fp))!=EOF) putchar(ch); putchar(''); fclose(fp); return 0; )
Cuando ejecute el programa, la salida será:
Nombre: Erica Edad: 25 Ciudad: Berlín