Позиционирование указателя записи-чтения

С каждым файлом связан указатель записи-чтения (маркер), задающий место доступа к очередному байту файла. При выполнении последовательного доступа маркер позиционируется (смещается) автоматически при любой операции чтения или записи. Если после ввода информации в файл требуется её прочитать с самого начала, необходимо прежде всего использовать функцию вида

rewind (fp), где fp – указатель на открытый файл.

Эта функция устанавливает маркер записи-чтения на начало файла. Файл можно обрабатывать в любом порядке, если передвинуть маркер в нужную позицию функцией вида

Int fseek (указатель_потока, (long) смещение, начало_отсчета),

которая сдвигает маркер записи-чтения файла, на который ссылается указатель_потока, на величину смещения от начала_отсчета. При этом если смещение > 0, то выполняется сдвиг к концу файла, а если смещение < 0 – к началу файла.

Начало_отсчета может принимать следующие значения:

SEEK_SET (или 0) – сдвиг выполняется от начала файла;

SEEK_CUR (или 1) – сдвиг выполняется от текущей позиции маркера;

Seek_end (или 2) – сдвиг выполняется от конца файла;

Символьные константы начала_отсчета определены в заголовочном файле stdio.h. В случае успеха функция возвращает 0, иначе – EOF (–1).

Например, если из файла с указателем myfile прочитана строка из 20 символов, и мы хотим вернуться к началу этой строки, необходимо позиционировать маркер записи-чтения файла функцией

fseek (myfile, -20, SEEK_CUR).

Функции файлового ввода-вывода

Эти функции можно разделить на несколько типов в зависимости от структуры передаваемых данных:

Тип функции ввода-вывода Структура данных
Посимвольный Поток символов
Построчный Последовательность строк переменной длины
Форматированный Форматированные поля с разделителями
Блоковый Последовательность записей постоянной длины (блоков)

Первые три типа файловых функций ввода-вывода работают аналогично стандартным функциям ввода-вывода, однако требуют задания указателя на обрабатываемый файл, например, описанного как

FILE *fp.


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



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