fseek(<handle>, <posición puntero>, <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).
PROGRAM ejemplo_fseek; GLOBAL mitabla[3]=11,22,33,44; midato; mihandle; BEGIN mihandle=fopen("help\help.dat","w"); fwrite(OFFSET mitabla,4,mihandle); fclose(mihandle); mihandle=fopen("help\help.dat","r"); // Sitúa el puntero para leer el cuarto dato del archivo (44) fseek(mihandle,3,seek_set); fread(OFFSET midato,1,mihandle); fclose(mihandle); END
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 3 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.
Nota: Por defecto, la <posición del puntero> se especifica como un número de datos simples, teniendo en cuenta que un dato simple (una variable) ocupa 4 bytes. Es decir, que si por ejemplo, se sitúa el puntero en la posición diez a partir del inicio del fichero, se podrá entonces acceder a los datos contenidos en el archivo a partir del byte cuarenta.
Se puede cambiar esta relación modificando la variable global unit_size, que por defecto vale 4 en todos los programas.