La funzione fseek () in C ++ imposta l'indicatore di posizione del file per il flusso di file specificato.
La funzione fseek () è definita nel file di intestazione.
prototipo fseek ()
int fseek (FILE * stream, offset lungo, int origin);
Se il file viene aperto in modalità binaria, la nuova posizione del puntatore del file è esattamente offset di byte dall'origine.
Se il file viene aperto in modalità testo, i valori supportati per l'offset sono:
- Zero: funziona con qualsiasi valore di origine, ad esempio SEEK_SET, SEEK_CUR e SEEK_END.
- Valore restituito da una chiamata a ftell (stream): funziona solo con l'origine di SEEK_SET.
Se il flusso è orientato al largo, vengono applicate le restrizioni sia del testo che dei flussi binari, cioè il risultato di ftell è consentito con SEEK_SET e lo zero offset è consentito da SEEK_SET e SEEK_CUR, ma non SEEK_END.
La funzione fseek annulla anche gli effetti di ungetc e cancella lo stato di fine file, se applicabile.
Se si verifica un errore di lettura o scrittura, ferror viene impostato e la posizione del file non viene modificata.
Parametri fseek ()
- stream: il flusso di file da modificare.
- offset: il numero di caratteri da spostare dall'origine.
- origine: posizione utilizzata come riferimento da aggiungere all'offset. Può avere i seguenti valori:
Valore | Descrizione |
---|---|
SEEK_SET | Inizio del file |
SEEK_CUR | Posizione corrente del puntatore del file |
SEEK_END | Fine del file |
fseek () Restituisce il valore
- In caso di successo la funzione fseek () restituisce zero, altrimenti diverso da zero.
Esempio: come funziona la funzione 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; )
Quando esegui il programma, l'output sarà:
Nome: Erica Età: 25 Città: Berlino