Funktionen fseek () i C ++ ställer in filpositionsindikatorn för den angivna filströmmen.
Funktionen fseek () definieras i rubrikfilen.
fseek () prototyp
int fseek (FILE * stream, long offset, int origin);
Om filen öppnas i binärt läge förskjuts filpekarens nya position exakt byte från ursprunget.
Om filen öppnas i textläge är de stödda värdena för offset:
- Noll: Det fungerar med alla ursprungsvärden, dvs SEEK_SET, SEEK_CUR och SEEK_END.
- Värde som returneras av ett samtal till ftell (stream): Det fungerar bara med ursprunget till SEEK_SET.
Om strömmen är bredorienterad tillämpas begränsningarna för både text och binära strömmar, dvs resultatet av ftell tillåts med SEEK_SET och nollförskjutning tillåts från SEEK_SET och SEEK_CUR, men inte SEEK_END.
Fseek-funktionen ångrar också effekterna av ungetc och rensar filens slutstatus, om tillämpligt.
Om ett läs- eller skrivfel inträffar ställs ferror in och filpositionen påverkas inte.
fseek () Parametrar
- stream: Filströmmen som ska ändras.
- offset: Antalet tecken som ska förskjutas från ursprunget.
- ursprung: Position som referens för att lägga till förskjutning. Det kan ha följande värden:
Värde | Beskrivning |
---|---|
SEEK_SET | Början på filen |
SEEK_CUR | Aktuell position för filpekaren |
SEEK_END | Filens slut |
fseek () Returvärde
- Vid framgång returnerar fseek () -funktionen noll, annars noll.
Exempel: Hur fungerar 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; )
När du kör programmet blir resultatet:
Namn: Erica Ålder: 25 Stad: Berlin