Объявление файла

В С нет специального типа и встроенных средств ввода-вывода при работе с файлами, как это было, например, в языке Pascal. Рассмотрим, что означает следующее, например, объявление: FILE * fp. Можно подумать, что это объявлен указатель на область памяти, в которой находится информация файла. Но, во-первых, файл всегда связан с внешним устройством, то есть информация файла всегда находится во внешней памяти. С другой стороны, значением указателя является адрес ячейки, находящейся в оперативной памяти. Получается противоречие. Тогда что же мы таким образом объявили?

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

физическое имя файла по правилам операционной системы (см. 1.3);

состояние файла, например, открыт для чтения (см. 1.3);

положение так называемого “невидимого курсора”, или указателя (индикатора) позиции файла. Открытие файла устанавливает его на начало файла. По мере чтения или записи он продвигается по файлу. Например, после чтения определённой порции информации этот “курсор” перемещается и позицианируется там, откуда будет читаться следующая порция данных;

указатель на буфер, связанный с файлом. Дело в том, что при обмене данными с внешним устройством происходит так называемая буферизация данных. Информация не сразу, например, записывается в файл. Сначала некоторая порция информации сохраняется в промежуточной оперативной памяти, которая называется буфер ввода-вывода. И только после того, как там накопится определённый объём информации (целый сектор), этот буфер очищается и данные физически записываются в файл. Таким образом экономится время, затрачиваемое на обмен данными с внешним устройством. Это можно частично сравнить с доставкой пассажиров в аэропорту к самолёту;

тип доступа.


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



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