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.

|