Ввод/вывод при прямом доступе: функция fseek()

При прямом доступе можно выполнять операции ввода/вывода, используя систему ввода/вывода языка С и функцию fseek(), которая устанавливает указатель текущей позиции в файле (или перемещает указатель записи/чтения по файлу). Прототип этой функции следующий:

int fseek (FILE *уф, long int колич_байт, int начало_отсчета);

Здесь уф – это указатель файла, возвращаемый в результате вызова функции fopen(), колич_байт – количество байтов, на которое смещается указатель записи/чтения файла (или курсор файла), считая от начала_отсчета, где начало отсчёта – это одна из следующих констант:

Начало файла – SEEK_SET

Текущая позиция – SEEK_CUR

Конец файла – SEEK_END

При успешном завершении своей работы функция fseek() возвращает нуль, а в случае ошибки – ненулевое значение.

Иными словами, параметры этой функции следующие: файловая переменная, размер смещения (в байтах) и начало отсчёта.

Так, например, курсор установлен в начало файла, где хранится одномерный целочисленный массив. Необходимо сместить его на элемент с номером Num. Это можно сделать следующим образом. Для вычисления размера смещения нужно размер одного элемента sizeof(int) умножить на количество предшествующих элементов массива (Num - 1):

fseek (fp, sizeof(int) * (Num - 1), SEEK_SET);


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



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