Funkcija fseek () u C ++ postavlja pokazatelj položaja datoteke za zadani tok datoteka.
Funkcija fseek () definirana je u zaglavnoj datoteci.
prototip fseek ()
int fseek (FILE * tok, dugačak pomak, int podrijetlo);
Ako se datoteka otvori u binarnom načinu, novi položaj pokazivača datoteke točno je odmaknut u bajtovima od izvora.
Ako se datoteka otvori u tekstualnom načinu, podržane vrijednosti za pomak su:
- Nula: Radi s bilo kojom vrijednošću podrijetla, tj. SEEK_SET, SEEK_CUR i SEEK_END.
- Vrijednost vraćena pozivom ftell (stream): Radi samo s podrijetlom SEEK_SET.
Ako je tok široko orijentiran, primjenjuju se ograničenja i tekstualnog i binarnog toka, tj. Rezultat ftella dopušten je sa SEEK_SET, a nulti pomak dopušten iz SEEK_SET i SEEK_CUR, ali ne i SEEK_END.
Funkcija fseek također poništava učinke ungetca i briše status kraja datoteke, ako je primjenjivo.
Ako se dogodi pogreška čitanja ili pisanja, postavlja se ferror i to ne utječe na položaj datoteke.
fseek () parametri
- stream: tok datoteke za izmjenu.
- pomak: broj znakova koje treba premjestiti iz ishodišta.
- ishodište: Položaj koji se koristi kao referenca za dodavanje ofseta. Može imati sljedeće vrijednosti:
Vrijednost | Opis |
---|---|
SEEK_SET | Početak datoteke |
SEEK_CUR | Trenutni položaj pokazivača datoteke |
SEEK_END | Kraj datoteke |
fseek () Povratna vrijednost
- Nakon uspjeha funkcija fseek () vraća nulu, u suprotnom nije nula.
Primjer: Kako funkcionira funkcija fseek ()?
#include int main() ( FILE* fp = fopen("example.txt","w+"); char ch; fputs("Erica 25 Berlin", fp); rewind(fp); printf("Name: "); while((ch=fgetc(fp))!=' ') putchar(ch); putchar(''); printf("Age: "); fseek(fp,10,SEEK_SET); while((ch=fgetc(fp))!=' ') putchar(ch); putchar(''); printf("City: "); fseek(fp,15,SEEK_SET); while((ch=fgetc(fp))!=EOF) putchar(ch); putchar(''); fclose(fp); return 0; )
Kada pokrenete program, izlaz će biti:
Ime: Erica Dob: 25 Grad: Berlin