FSEEK(3) | Руководство программиста Linux | FSEEK(3) |
fgetpos, fseek, fsetpos, ftell, rewind - меняют положение в потоке
#include <stdio.h>
int fseek(FILE *stream, long offset, int whence);
long ftell(FILE *stream);
void rewind(FILE *stream);
int fgetpos(FILE *stream, fpos_t *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, равным началу файла. Эта функция эквивалентна вызову:
хотя в этом случае также сбрасывается индикатор ошибок потока (смотрите clearerr(3)).
Функции fgetpos() и fsetpos() эквивалентны ftell() и fseek() (где значение whence равно SEEK_SET); они сохраняют или устанавливают текущее значение файлового смещения в объектах, определяемых pos. В некоторых не-UNIX системах объект fpos_t может быть сложным объектом, а данные функции могут быть единственным переносимым способом изменения положения в текстовом потоке.
Функция rewind() не возвращает значений. При успешном выполнении функции fgetpos(), fseek(), fsetpos() возвращают 0, а ftell() возвращает значение текущего смещения. В противном случае возвращается -1, а в errno записывается соответствующий код ошибки.
При ошибках функции 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, C89, C99.
2018-04-30 | GNU |