fgetpos, fseek, fsetpos, ftell, rewind -
меняют
положение
в потоке
Standard C library (
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);
Функция
fseek()
устанавливает
положение
файлового
индикатора
в потоке, на
который
указывает
аргумент
stream. Новое
положение
(в байтах)
получается
прибавлением
offset байтов к
положению,
которое
задаётся
параметром
whence. Если
значение
whence
равно
SEEK_SET,
SEEK_CUR
или
SEEK_END, то
смещение
указывается
относительно
начала
файла,
текущего
положения
указателя
или конца
файла,
соответственно.
Успешный
вызов
функции
fseek()
очищает (clear)
индикатор
конца
файла
потока и
отменяет
влияние
функции
ungetc(3)
на этот же
поток.
Функция
ftell()
возвращает
текущее
значение
файлового
индикатора
положения
для потока,
на который
указывает
stream.
Функция
rewind()
устанавливает
файловый
индикатор
положения
для потока,
на который
указывает
stream, равным
началу
файла. Эта
функция
эквивалентна
вызову:
(void) fseek(stream, 0L, SEEK_SET)
хотя в этом
случае
также
сбрасывается
индикатор
ошибок
потока
(смотрите
clearerr(3)).
Функции
fgetpos()
и
fsetpos()
эквивалентны
ftell() и
fseek() (где
значение
whence
равно
SEEK_SET);
они
сохраняют
или
устанавливают
текущее
значение
файлового
смещения в
объектах,
определяемых
pos. В
некоторых
не-UNIX
системах
объект
fpos_t
может быть
сложным
объектом, а
данные
функции
могут быть
единственным
переносимым
способом
изменения
положения
в
текстовом
потоке.
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.
Функция
rewind()
не
возвращает
значений.
При
успешном
выполнении
функции
fgetpos(),
fseek(),
fsetpos()
возвращают
0, а
ftell()
возвращает
значение
текущего
смещения. В
противном
случае
возвращается
-1, а в
errno
записывается
соответствующий
код ошибки.
- EINVAL
- Значение
whence в fseek() не
равно SEEK_SET, SEEK_
или SEEK_CUR. Или
результирующее
смещение
файла
получается
отрицательным.
- ESPIPE
- Связанный
со stream
файловый
дескриптор
не
допускает
перемоток
(верно для
каналов, FIFO
или
сокетов).
При
ошибках
функции
fgetpos(),
fseek(),
fsetpos() и
ftell()
устанавливают
значение
errno
равным
значению,
определённому
в функциях
fflush(3),
fstat(2),
lseek(2) и
malloc(3).
Описание
терминов
данного
раздела
смотрите в
attributes(7).
Интерфейс |
Атрибут |
Значение |
fseek(), ftell(), rewind(), fgetpos(),
fsetpos() |
Безвредность
в нитях |
MT-Safe |
POSIX.1-2001, POSIX.1-2008, C99.
lseek(2),
fseeko(3)
Русский
перевод
этой
страницы
руководства
был сделан
Azamat Hackimov <
[email protected]>, Dmitry Bolkhovskikh
<
[email protected]>, Yuri Kozlov <
[email protected]> и
Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]