Funcția fseek () din C ++ setează indicatorul de poziție a fișierului pentru fluxul de fișiere dat.
Funcția fseek () este definită în fișierul antet.
fseek () prototip
int fseek (flux FILE *, offset lung, origine int);
Dacă fișierul este deschis în modul binar, noua poziție a indicatorului de fișier este exact compensată de octeți de la origine.
Dacă fișierul este deschis în modul text, valorile acceptate pentru offset sunt:
- Zero: funcționează cu orice valoare de origine, adică SEEK_SET, SEEK_CUR și SEEK_END.
- Valoare returnată de un apel către ftell (flux): funcționează numai cu originea SEEK_SET.
Dacă fluxul este orientat spre larg, se aplică restricțiile atât pentru fluxul de text, cât și pentru cele binare, adică rezultatul ftell este permis cu SEEK_SET și zero offset este permis de la SEEK_SET și SEEK_CUR, dar nu SEEK_END.
Funcția fseek anulează efectele ungetc și șterge starea de sfârșit de fișier, dacă este cazul.
Dacă apare o eroare de citire sau scriere, Ferror este setat și poziția fișierului nu este afectată.
fseek () Parametri
- stream: fluxul de fișiere de modificat.
- offset: numărul de caractere de deplasat de la origine.
- origine: Poziție utilizată ca referință pentru a adăuga la offset. Poate avea următoarele valori:
Valoare | Descriere |
---|---|
SEEK_SET | Începutul dosarului |
SEEK_CUR | Poziția curentă a indicatorului de fișier |
SEEK_END | Sfârșitul fișierului |
fseek () Valoare returnată
- La succes funcția fseek () returnează zero, altfel decât zero.
Exemplu: Cum funcționează funcția 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; )
Când rulați programul, ieșirea va fi:
Nume: Erica Vârstă: 25 Oraș: Berlin