Scroll to navigation

fseek(3) Library Functions Manual fseek(3)

NAZWA

fgetpos, fseek, fsetpos, ftell, rewind - zmienia pozycję w strumieniu

BIBLIOTEKA

Standardowa biblioteka C (libc, -lc)

SKŁADNIA

#include <stdio.h>
int fseek(FILE *stream, long offset, int whence);
long ftell(FILE *stream);
void rewind(FILE *stream);
int fgetpos(FILE *restrict stream, fpos_t *restrict pos);
int fsetpos(FILE *stream, const fpos_t *pos);

OPIS

Funkcja fseek() ustawia wskaźnik pozycji pliku dla strumienia wskazywanego przez stream. Nową pozycję, określoną w bajtach, otrzymuje się, dodając offset bajtów do pozycji określonej przez whence. Gdy whence jest ustawione na SEEK_SET, SEEK_CUR lub SEEK_END, offset jest określany, odpowiednio, względem początku pliku, wskaźnika bieżącej pozycji lub końca pliku. Pomyślne wywołanie funkcji fseek() powoduje wyczyszczenie sygnalizatora końca pliku dla strumienia i wycofuje wszelkie efekty funkcji ungetc(3) dla tego samego strumienia.

Funkcja ftell() pobiera bieżącą wartość wskaźnika pozycji pliku dla strumienia wskazywanego przez stream.

Funkcja rewind() ustawia wskaźnik pozycji pliku dla strumienia wskazywanego przez stream na początku pliku. Jest równoważna:

(void) fseek(stream, 0L, SEEK_SET)

z tą różnicą, że jest również czyszczony wskaźnik błędu dla tego strumienia (zobacz clearerr(3)).

Funkcje fgetpos() i fsetpos() stanowią alternatywne interfejsy równoważne z ftell() i fseek() (z whence ustawionym na SEEK_SET), służące odpowiednio do zachowania bieżącej wartości offsetu pliku w obiekcie wskazywanym przez pos i do ustawienia tej wartości na podstawie podanego obiektu. W niektórych systemach nieuniksowych obiekt fpos_t może być złożonym obiektem i powyższe funkcje mogą dawać jedyną przenośną możliwość zmiany pozycji strumienia tekstowego.

Jeśli strumień odnosi się do zwykłego pliku, a wynikowe przesunięcie strumienia znajduje się poza rozmiarem pliku, kolejny zapis rozszerzy plik aż do przesunięcia, za pomocą dziur, przed zatwierdzeniem danych. Więcej informacji o szczegółach zachowania przeszukiwania pliku znajduje się w podręczniku lseek(2).

WARTOŚĆ ZWRACANA

Funkcja rewind() nie zwraca wartości. Przy pomyślnym zakończeniu, fgetpos(), fseek() i fsetpos() zwracają 0, a ftell() zwraca bieżące przesunięcie. W przeciwnym przypadku zwracane jest -1 i ustawiane errno, wskazując błąd.

BŁĘDY

Argument whence funkcji fseek() nie jest jednym z SEEK_SET, SEEK_END lub SEEK_CUR. Albo: wynikowe przesunięcie pliku będzie ujemne.
Deskryptor pliku dla strumienia stream nie pozwala na przestawianie wskaźnika pozycji (na przykład odnosi się do potoku, kolejki FIFO lub gniazda).

Funkcje fgetpos(), fseek(), fsetpos() i ftell mogą również zawieść, ustawiając w errno dowolny z błędów określonych dla funkcji fflush(3), fstat(2), lseek(2) i malloc(3).

ATRYBUTY

Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku attributes(7).

Interfejs Atrybut Wartość
fseek(), ftell(), rewind(), fgetpos(), fsetpos() Bezpieczeństwo wątkowe MT-bezpieczne

STANDARDY

C11, POSIX.1-2008.

HISTORIA

POSIX.1-2001, C89.

ZOBACZ TAKŻE

lseek(2), fseeko(3)

TŁUMACZENIE

Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.

2 maja 2024 r. Linux man-pages (niewydane)