Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Записи фиксированного размера




Рассмотрим ситуацию, когда все записи в файле имеют фиксированный размер. В этом случае не составляет труда рассчитать смещение в пределах файла для доступа к записи по ее номеру.

Пример

Пусть i переменная типа long, в которой хранится номер записи к которой необходимо получить доступ, book указатель на буфер для размещения структуры типа MY_BOOKS, fptr ссылка на поток, открытый в режиме “rb” или “r+b”. Тогда для доступа к i-ой записи можно воспользоваться следующим набором операторов:

fseek(fptr, (i - 1)*sizeof(MY_BOOKS), SEEK_SET);

if(!fread(book, sizeof(MY_BOOKS), 1, fptr))

{

perror(“Ошибка чтения!\т”);

exit(3);

}

Контроль выхода за пределы файла

Если есть опасность попытки чтения за пределами файла, то можно эту ситуацию проконтролировать например так:

 

fseek(fptr, 0L, SEEK_END);

if(ftell(fptr) <= i * sizeof(MY_BOOKS))

puts(“Выход за пределы файла!\n”);

……………………………………………………………………

Вопросы для самоконтроля

· Перечислите параметры функций fread() и fwrite()!

· Каким образом указывается сдвиг положения указателя текущей записи в файле на основе применения функции fseek()?

· Почему операции поиска записей по ключу или по номеру в файле с записями переменной длины выполняются медленно?

· Для чего применяются функции ftell(), fgetpos(), fsetpos()?

· Позиционируйте указатель текущей записи в файле f в конец файла! – в начало файла!

· Определите количество данных в файле f и количество записей struct MYSTR в файле!

· Дать словесное описание того, как можно выполнить контроль выхода за пределы файла, если требуется доступ к i-й записи!

Вопросы для самостоятельного изучения

· Параметры и результаты работы функций ftell(), fgetpos(), fsetpos()?

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных