Fseek
fseek
Функция Устанавливает указатель файла в потоке.
Синтаксис #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.
Смотрите также
Пример:
#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); }