АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Произвольный доступ к файлу

Читайте также:
  1. MCU Poker Charts доступен всем
  2. Альтернативные интерфейсы доступа к многомерным данным
  3. Аудит доступа к объектам
  4. В каких случаях и кто имеет право ограничивать доступ к информации?
  5. Веб-сайт Летней школы: www.kantiana.ru/summerschool (доступен с 15 июня 2014 г.).
  6. Визначення рівня доступу до баз даних Lotus Notes.
  7. Вопрос 33 Как фильтрации портов и списки доступа помочь обеспечить безопасность сети?
  8. Вопрос: Как может человек в случае какого-либо заболевания включить механизм саморегуляции на уровне подсознания? Доступно ли ему это?
  9. Выбор оперативного доступа
  10. Глава 11. Вампир не отвечает или вечно недоступен.
  11. Доступ до інформації громадян з особливим правовим статусом
  12. Доступ до інформації громадян з особливим правовим статусом

 

В приведенных выше программах с функциями ввода-вывода низкого уровня обмен с файлом осуществлялся последовательно. При необходимости файл можно читать на низком уровне и в произвольном порядке. Так же как это делалось при работе с потоками, можно изменять значение указателя текущей позиции чтения/записи в файле. Для этой цели служит функция lseek(). Прототип этой функции имеет следующий вид:

 

 

Функция lseek() изменяет текущую позицию в файле, связанном с дескриптором fd, на новую, определяемую смещением (второй параметр - offset) относительно выбранной точки отсчета (третий параметр - origin).

Точка отсчета задается одной из предопределенных констант, размещенных в заголовочном файле io.h (MS-DOS) или файле unistd.h (UNIX):

 

SEEK_SET (имеет значение 0) - начало файла;

SEEK_CUR (имеет значение 1)-текущая позиция;

SEEK_END (имеет значение 2) - конец файла.

 

При удачном завершении функция lseek() возвращает новую текущую позицию чтения/записи, представляющую собой смещение от начала файла. Попытка переместиться за пределы файла считается ошибкой. Код ошибки заносится в глобальную переменную еrrnо, определенную в заголовочном файле errno.h.

Для определения текущей позиции в файле можно использовать функцию tell(), прототип которой имеет следующий вид:

 

 

Приведем примеры использования функции lseek().

 

Пример 1.

Установка текущей позиции в файле на его начало:

 

 

Пример 2.

Установка текущей позиции для последующего добавления данных в файл (позиция в конце файла):

 

 

Пример 3.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.002 сек.)