CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
fseek
fseek
Функция Устанавливает указатель файла в потоке. Синтаксис #include <stdio.h> 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. Смотрите также fgetpos, fopen, fsetpos, ftell, lseek, rewind, setbuf, tell. Пример: #include <stdio.h> 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); }