Funkce fseek () v C ++ nastavuje indikátor polohy souboru pro daný stream souboru.
Funkce fseek () je definována v hlavičkovém souboru.
prototyp fseek ()
int fseek (FILE * stream, dlouhý offset, int origin);
Pokud je soubor otevřen v binárním režimu, je nová pozice ukazatele souboru přesně odsazená o bajty od počátku.
Pokud je soubor otevřen v textovém režimu, podporované hodnoty pro offset jsou:
- Nula: Funguje s jakoukoli hodnotou původu, tj. SEEK_SET, SEEK_CUR a SEEK_END.
- Hodnota vrácená voláním ftell (stream): Funguje pouze s počátkem SEEK_SET.
Pokud je stream široko orientovaný, použijí se omezení jak textových, tak binárních streamů, tj. Výsledek ftell je povolen s SEEK_SET a nulový offset je povolen z SEEK_SET a SEEK_CUR, ale ne SEEK_END.
Funkce fseek také zruší účinky ungetc a případně vymaže stav konce souboru.
Pokud dojde k chybě čtení nebo zápisu, nastaví se ferror a poloha souboru není ovlivněna.
Parametry fseek ()
- stream: Stream souborů, který chcete upravit.
- offset: Počet znaků, které mají být přemístěny z počátku.
- počátek: Poloha použitá jako reference pro přidání k odsazení. Může mít následující hodnoty:
Hodnota | Popis |
---|---|
SEEK_SET | Začátek souboru |
SEEK_CUR | Aktuální pozice ukazatele souboru |
SEEK_END | Konec souboru |
fseek () Vrátí hodnotu
- Při úspěchu vrátí funkce fseek () nulu, jinak nenulovou.
Příklad: Jak funguje funkce 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; )
Když spustíte program, výstup bude:
Jméno: Erica Věk: 25 Město: Berlín