Funkcia fseek () v C ++ nastavuje indikátor polohy súboru pre daný tok súborov.
Funkcia fseek () je definovaná v hlavičkovom súbore.
prototyp fseek ()
int fseek (FILE * stream, dlhy offset, int origin);
Ak je súbor otvorený v binárnom režime, nová pozícia ukazovateľa súboru je presne posunutá o bajty od začiatku.
Ak je súbor otvorený v textovom režime, podporované hodnoty pre offset sú:
- Nula: Funguje s ľubovoľnou hodnotou pôvodu, tj SEEK_SET, SEEK_CUR a SEEK_END.
- Hodnota vrátená volaním na ftell (stream): Funguje iba s pôvodom SEEK_SET.
Ak je prúd široko orientovaný, uplatňujú sa obmedzenia textového aj binárneho toku, tj. Výsledok ftell je povolený pre SEEK_SET a nulový posun je povolený pre SEEK_SET a SEEK_CUR, ale nie SEEK_END.
Funkcia fseek tiež zruší účinky ungetc a prípadne vymaže stav konca súboru.
Ak dôjde k chybe čítania alebo zápisu, nastaví sa ferror a pozícia súboru zostane nedotknutá.
Parametre fseek ()
- stream: stream súborov, ktorý chcete upraviť.
- offset: Počet znakov, ktoré sa majú premiestniť od začiatku.
- origin: Pozícia použitá ako referencia na pridanie k odsadeniu. Môže mať nasledujúce hodnoty:
Hodnota | Popis |
---|---|
SEEK_SET | Začiatok spisu |
SEEK_CUR | Aktuálna poloha ukazovateľa súboru |
SEEK_END | Koniec súboru |
fseek () Vráti hodnotu
- Pri úspechu funkcia fseek () vráti nulu, inak nenulovú.
Príklad: Ako funguje funkcia 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; )
Po spustení programu bude výstup:
Meno: Erica Vek: 25 Mesto: Berlín