CONSULTA I ACTUALITZACIÓ DE LES DADES D'UN FITXER

Per a poder actualitzar dades d'un fitxer, ens hem de poder bellugar enmig del seu contingut. Això ho fa possible el grup de funcions que presentem tot seguit.

#include <stdio.h>

int fseek (FILE * apfi, long desplaçament, int origen);

long ftell (FILE * apfi);

void rewind (FILE * apfi);

int fgetpos (FILE * apfi, fpos_t * ap_posició);

int fsetpos (FILE * apfi, const fpos_t * ap_posició);

Totes aquestes funcions realitzen operacions sobre un fitxer que ja s'ha obert i està associat a la variable apfi.

fseek: Permet indicar la posició del fitxer on es farà la propera lectura/escriptura. Aquesta posició és relativa a la variable indicada per origen, que pot prendre els valors:

  • SEEK_SET indica el començament del fitxer.
  • SEEK_CUR indica la posició actual de lectura/escriptura.
  • SEEK_END indica el final del fitxer.

Respecte aquesta posició, es realitzarà el desplaçament que indica la variable corresponent.

Per exemple, quan obrim un fitxer per llegir, el cursor de lectura se situa al començament del fitxer. Si nosaltres volguéssim situar-lo a la posició 40, li aplicaríem desplaçament 40L des de SEEK_SET o, en aquest cas també des de SEEK_CUR.

Si no hi ha errors, la fseek retorna 0.

ftell: Retorna l'actual posició del cursor de lectura/escriptura. Quan obrim un fitxer retorna 0, quan hem llegit 3 caràcters, retorna 3... Si esdevé un error, retorna -1.

rewind: Posa el cursor a zero, com si acabéssim d'obrir el fitxer. Equival a fseek amb desplaçament 0L des de SEEK_SET.

fgetpos: Declarem una variable posició de tipus fpos_t i li passem la seva adreça a aquesta funció que emmagatzemarà a posició allò necessari per a memoritzar on es troba el cursor de lectura/escriptura. Aquesta funció es combina amb fsetpos per a retornar el cursor al valor prèviament memoritzat. Si tot va bé retorna 0.

fsetpos: Amb fgetpos, hem carregat el valor de certa variable posició de tipus fpos_t. Li passem la seva adreça a aquesta funció que portarà a aquesta posició el cursor de lectura/escriptura. Si tot va bé retorna 0.

El següent programa "juga" una mica amb aquestes funcions:

Fes les proves que et cagui per entendre com actuen les funcions que acabem de descriure.

 

 

 

Autor: Lluís València López

Creative Commons License
Aquesta obra està subjecta a una Llicència de Creative Commons.