De functie fseek () in C ++ stelt de bestandspositie-indicator in voor de gegeven bestandsstroom.
De functie fseek () is gedefinieerd in het header-bestand.
fseek () prototype
int fseek (FILE * stream, long offset, int origin);
Als het bestand in binaire modus wordt geopend, is de nieuwe positie van de bestandspointer exact bytes verschoven ten opzichte van de oorsprong.
Als het bestand wordt geopend in tekstmodus, zijn de ondersteunde waarden voor offset:
- Nul: het werkt met elke waarde van oorsprong, dwz SEEK_SET, SEEK_CUR en SEEK_END.
- Waarde geretourneerd door een aanroep naar ftell (stream): het werkt alleen met de oorsprong van SEEK_SET.
Als de stream breed georiënteerd is, worden de beperkingen van zowel tekst- als binaire streams toegepast, dwz het resultaat van ftell is toegestaan met SEEK_SET en nul-offset is toegestaan vanaf SEEK_SET en SEEK_CUR, maar niet SEEK_END.
De fseek-functie maakt ook de effecten van ungetc ongedaan en wist de end-of-file-status, indien van toepassing.
Als er een lees- of schrijffout optreedt, wordt ferror ingesteld en wordt de bestandspositie niet beïnvloed.
fseek () Parameters
- stream: de bestandsstream die moet worden gewijzigd.
- offset: het aantal tekens dat verplaatst moet worden vanaf de oorsprong.
- oorsprong: positie die wordt gebruikt als referentie om toe te voegen aan offset. Het kan de volgende waarden hebben:
Waarde | Omschrijving |
---|---|
SEEK_SET | Begin van het bestand |
SEEK_CUR | Huidige positie van bestandsaanwijzer |
SEEK_END | Einde van bestand |
fseek () Retourwaarde
- Bij succes geeft de functie fseek () nul terug, anders niet nul.
Voorbeeld: hoe werkt de functie 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; )
Wanneer u het programma uitvoert, is de uitvoer:
Naam: Erica Leeftijd: 25 Stad: Berlijn