Funkcja fseek () w C ++ ustawia wskaźnik pozycji pliku dla danego strumienia pliku.
Funkcja fseek () jest zdefiniowana w pliku nagłówkowym.
fseek () prototyp
int fseek (PLIK * strumień, długie przesunięcie, int początek);
Jeśli plik jest otwierany w trybie binarnym, nowa pozycja wskaźnika pliku jest dokładnie przesunięta w bajtach od początku.
Jeśli plik jest otwarty w trybie tekstowym, obsługiwane wartości przesunięcia to:
- Zero: działa z dowolną wartością pochodzenia, tj. SEEK_SET, SEEK_CUR i SEEK_END.
- Wartość zwracana przez wywołanie ftell (strumień): działa tylko z początkiem SEEK_SET.
Jeśli strumień jest zorientowany na szerokość, stosowane są ograniczenia zarówno strumieni tekstowych, jak i binarnych, tj. Wynik ftell jest dozwolony z SEEK_SET, a przesunięcie zerowe jest dozwolone z SEEK_SET i SEEK_CUR, ale nie z SEEK_END.
Funkcja fseek również cofa efekty ungetc i czyści stan końca pliku, jeśli ma to zastosowanie.
Jeśli wystąpi błąd odczytu lub zapisu, ustawiany jest ferror, a pozycja pliku pozostaje niezmieniona.
fseek () Parametry
- stream: strumień pliku do zmodyfikowania.
- offset: liczba znaków do przesunięcia z początku.
- początek: położenie używane jako odniesienie do dodania do odsunięcia. Może mieć następujące wartości:
Wartość | Opis |
---|---|
SEEK_SET | Początek pliku |
SEEK_CUR | Bieżąca pozycja wskaźnika pliku |
SEEK_END | Koniec pliku |
fseek () Zwraca wartość
- Po pomyślnym zakończeniu funkcja fseek () zwraca zero, w przeciwnym razie wartość niezerową.
Przykład: Jak działa funkcja 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; )
Po uruchomieniu programu wynik będzie następujący:
Imię: Erica Wiek: 25 lat Miasto: Berlin