fgetpos, fseek, fsetpos, ftell, rewind - zmiana pozycji w strumieniu
Standardowa biblioteka C (
libc,
-lc)
#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);
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.
If the stream refers to a regular file and the resulting stream offset is beyond
the size of the file, subsequent writes will extend the file with a hole, up
to the offset, before committing any data. See
lseek(2) for details on
file seeking semantics.
Funkcja
rewind() nie zwraca wartości. Przy pomyślnym
zakończeniu,
fgetpos(),
fseek() i
fsetpos()
zwracają 0, a
ftell() zwraca bieżący offset. W
przeciwnym przypadku zwracane jest -1 i ustawiane jest
errno,
wskazujące na rodzaj błędu.
- EINVAL
- Argument whence funkcji fseek() nie jest
jednym z SEEK_SET, SEEK_END lub SEEK_CUR. Albo:
wynikowe przesunięcie pliku będzie ujemne.
- ESPIPE
- 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).
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-Safe |
POSIX.1-2001, POSIX.1-2008, C99.
lseek(2),
fseeko(3)
Autorami polskiego tłumaczenia niniejszej strony podręcznika
są: Andrzej Krzysztofowicz <
[email protected]>, Robert
Luberda <
[email protected]> i Michał Kułach
<
[email protected]>
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
[email protected]