C ++: n fseek () -toiminto asettaa tiedoston sijainnin osoittimen annetulle tiedostovirralle.
Fseek () -funktio määritetään otsikkotiedostossa.
fseek () prototyyppi
int fseek (FILE * virta, pitkä siirtymä, int alkuperä);
Jos tiedosto avataan binaaritilassa, tiedoston osoittimen uusi sijainti siirtyy tavuiltaan täsmälleen alkuperäisestä.
Jos tiedosto avataan tekstitilassa, siirtymän tuetut arvot ovat:
- Nolla: Se toimii minkä tahansa alkuperäarvon kanssa, esim. SEEK_SET, SEEK_CUR ja SEEK_END.
- Arvo, jonka palauttaa kutsu ftell (stream): Se toimii vain alkuperän SEEK_SET kanssa.
Jos virta on laaja-suuntautunut, sovelletaan sekä teksti- että binaarivirtausten rajoituksia, ts. Ftell-tulos on sallittu arvolla SEEK_SET ja nollasiirtymä on sallittu välillä SEEK_SET ja SEEK_CUR, mutta ei SEEK_END.
Fseek-toiminto kumoaa myös ungetc: n vaikutukset ja tyhjentää tiedoston lopun tilan tarvittaessa.
Jos luku- tai kirjoitusvirhe tapahtuu, virhe määritetään ja tiedoston sijainti ei muutu.
fseek () -parametrit
- stream: muokattava tiedostovirta.
- offset: Alkuperästä syrjäytettävien merkkien määrä.
- alkuperä: Asemaa käytetään viitteenä offsetin lisäämiseksi. Sillä voi olla seuraavat arvot:
Arvo | Kuvaus |
---|---|
SEEK_SET | Tiedoston alku |
SEEK_CUR | Tiedoston osoittimen nykyinen sijainti |
SEEK_END | Tiedoston loppu |
fseek () Palautusarvo
- Menestyksessä fseek () -funktio palauttaa nollan, muuten nolla.
Esimerkki: Kuinka fseek () -toiminto toimii?
#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; )
Kun suoritat ohjelmaa, tulos on:
Nimi: Erica Ikä: 25 Kaupunki: Berliini