Функция
#include <stdio.h>
int fseek(FILE * stream, long offset, int fromwhere);
устанавливает адресный указатель файла, соответствующий потоку 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 возвращает индикатор ошибки только в случае, если устройство или файл не открыты.
Пример:
#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);
}