КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Произвольный доступ к файлуФайл предназначен для последовательного доступа к нему, другими словами, для обращения к определенному символу этого файла нужно прочитать все символы, расположенные перед ним. Однако существует функция fseek(), которая имитирует произвольный доступ. Эта функция перемещает файловый указатель на заданное количество позиций, производя отсчет от начала файла, от текущей позиции или от конца файла. Функция fseek() именно имитирует произвольный доступ, а не осуществляет его, поскольку для перемещения указателя на требуемую позицию эта функция передвигает его шаг за шагом, а не обращается к символу напрямую, как это происходит при работе с массивом.
Рассмотрим работу функции fseek() на примере файла со следующим содержимым:
.
fseek(myFile, 0, SEEK_SET); putchar(fgetc(myFile)); fseek(myFile, -1, SEEK_END); putchar(fgetc(myFile)); fseek(myFile, 20, SEEK_SET); putchar(fgetc(myFile)); fseek(myFile, -20, SEEK_END); putchar(fgetc(myFile)); fseek(myFile, 32, SEEK_SET); putchar(fgetc(myFile)); fseek(myFile, -33, SEEK_END); putchar(fgetc(myFile));
Еще одна полезная функция, относящаяся к произвольному доступу, – это функция ftell(), которая возвращает номер текущей позиции, производя отсчет от начала файла.
|