void fseek(FILE * handle, int posición, int modo)
Descripción:
Sitúa el puntero de lectura/escritura de un archivo en la posición indicada.
La función requiere, en primer lugar, el handle o identificador de archivo devuelto por la función fopen() al abrirlo.
En segundo lugar se especifica la nueva posición en la que debe situarse el puntero del archivo. Tras llamar a esta función, todas las operaciones de lectura o escritura que se efectúen, lo harán a partir de esta posición.
Como último parámetro se debe indicar el modo en el que se especifica la nueva posición del puntero, puede ser uno de estos tres:
SEEK_SET // Posición respecto al inicio del archivo (0) SEEK_CUR // Incremento relativo a la posición actual (1) SEEK_END // Posición respecto al final del archivo (2)
Para obtener la situación actual del puntero de un archivo, se debe utilizar la función ftell().
Todas las operaciones de lectura o escritura sobre un archivo avanzan automáticamente el puntero del mismo, de forma que todos estos accesos se realicen de forma secuencial (leyendo o escribiendo los datos unos a continuación de otros).
int mitabla[4] = {11,22,33,44}; int midato; FILE * mihandle; MAIN_PROGRAM_CDIV BEGIN_PROGRAM mihandle=fopen("../help.dat","w"); fwrite(mitabla, 4, 4, mihandle); fclose(mihandle); mihandle=fopen("../help.dat","r"); // Sitúa el puntero para leer el cuarto dato del archivo (44) fseek(mihandle, 12, SEEK_SET); fread(&midato, 1, 4, mihandle); fclose(mihandle); END_PROGRAM
Este ejemplo escribe los cuatro datos contenidos en mitabla (11,22,33 y 44) en el archivo help.dat, tras esto, abre el archivo para lectura y utiliza la función fseek() para situar el puntero en la posición 12 a partir del inicio del archivo (con SEEK_SET).
A partir de este momento, se podrá leer a partir del cuarto dato del archivo, por ello, cuando se lee un valor en la variable midato este será 44, es decir, el cuarto valor de la tabla.