Функция fseek

Функция

#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);

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: