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.


Ver: ftell() - fread() - fwrite()