CATEGORII DOCUMENTE |
Functii pentru pozitionare
a) Functia fseek()
Determina pozitionarea fisierului la citire sau scriere, incepand cu pozitia selectata. Forma functiei:
int fseek(FILE *fp, long offset, int origin)
unde 'fp' este un pointer-fisier returnat prin apelul functiei fopen(), 'offset' este deplasamentul (numar octeti) noii pozitii fata de 'origin', iar 'origin' este una din urmatoarele macrodefinitii:
SEEK_SET - inceput de fisier;
SEEK_CUR - pozitie curenta;
SEEK_END - sfarsit de fisier.
Functia returneaza 0 daca se executa cu succes si o valoare nenula in caz de eroare.
Daca nu s-a efectuat nici o operatie de I/O de la deschiderea fisierului in mod APPEND (adaugare), atunci pointerul indica inceputul fisierului.
Nu se recomanda utilizarea functiei fseek() pentru fisiere text; se sugereaza utilizarea acesteia numai pentru fisiere binare. Translatiile CR-LF efectuate in mod text pot cauza functionarea defectoasa a functiei fseek. Functia fopen si toate celelalte functii vor cauta sa inlature caracterul CTRL/Z terminator de fisier (EOF).
Singurele operatii garantate sa functioneze corect cand se utilizeaza fseek asupra fisierelor deschise in mod text este pozitionarea cu offset 0 relativa la orice pozitie din fisier si pozitionarea fata de inceputul fisierului cu un offset returnat de functia ftell().
Functia ftell() este definita astfel:
long ftell( FILE *stream );
Functia returneaza valoarea curenta a pointerului fisier. Pozitia este exprimata prin offsetul fata de inceputul fiierului.
In cazul fisierelor deschise in mod text, acest offset nu reflecta intotdeauna exact numarul de octeti datorita translatiei CR-LF. Este preferata folosirea simultana a functiilor fseek si ftell pentru a opera asupra fisierelor text, dar se recomanda folosirea lor in special asupra fisierelor binare.
Exemplu: Pentru a citi cel de-al 235 byte din fisierul numit 'test' se poate folosi urmatorul program:
func1() /* se declara functia func1() */
fseek(fp, 235L, 0);
return getc(fp);} /* se citeste un caracter de la pozitia 235 */
Observatie: L modifica constanta 235 la tipul long int.
Exemplu:
/* Acest program deschide fisierul FSEEK.OUT si muta pointerul in diverse locuri din fisier */
#include <stdio.h>
void main( void )
fclose( stream );}}
In urma executie programului se obtine:
Pointerul fisier este plasat la mijlocul primei linii.
Acesta este fisierul 'fseek.out'.
Press any key to continue
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1003
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved