Функция Устанавливает указатель файла в потоке.
Синтаксис #include
int fseek(FILE * stream, long offset,
int fromwhere);
Файл, содержащий stdio.h
прототип
Описание Функция fseek устанавливает адресный указатель
файла, соответствующий потоку stream, в новую по-
зицию, которая расположена по смещению offset от-
носительно места в файле, определяемого парамет-
ром fromwhere.
Параметр fromwhere может иметь одно из трех зна-
чений 0, 1 или 2, которые представлены тремя сим-
волическими константами (определенными в файле
stdio.h), следующим образом:
---------------------------------------------------
Параметр Размещение в файле
fromwhere
--------------------------------------------------
SEEK_SET (0) начало файла;
SEEK_CUR (1) позиция текущего указателя
файла;
SEEK_END (2) конец файла (EOF);
--------------------------------------------------
Функция fseek сбрасывает любой символ, записанный
с помощью функции ungetc.
Функция fseek используется с операциями ввода/вы-
вода в поток. При работе с дескриптором файла
пользуйтесь функцией lseek.
После этой операции можно производить как ввод,
так и вывод в поток.
Возвращаемое Функция fseek возвращает значение 0, если
значение указатель файла успешно перемещен, и ненулевое
значение в случае неудачного завершения.
Примечание. Функция fseek может вернуть нулевое
значение даже в случае, если этого не было. Это
происходит в результате того, что DOS, которая и
перемещает указатель, не проверяет его установку.
fseek возвращает индикатор ошибки только в слу-
чае, если устройство или файл не открыты.
Переносимость Данная функция поддерживаются на системах UNIX
и стандартом ANSI C.
Смотрите также fgetposfopenfsetposftelllseekrewindsetbuftell
Пример:
#include
int main(void)
{
FILE *stream;
stream = fopen("MYFILE.TXT", "r");
print("filesize of MYFILE.TXT is %ld bytes\n",
filesize(stream));
}
long filesize(FILE *stream);
{
long curpos,length;
/* сохранить текущее положение указателя */
curpos = ftell(stream);
/* перейти в конец файла */
fseek(stream, 0L, SEEK_END);
/* получить текущее положение указателя */
length = ftell(stream);
/* восстановить старое положение */
fseek(stream, curpos, SEEK_SET);
return(length);
}