Cтраница 4
При открытии файла для чтение ( первым символом аргумента mode является символ г) происходит ошибка, если файл не существует или данные не могут быть прочитаны. Открытие файла для обновление ( первым символом аргумента mode является символ а) означает, что все последующие записи в файл будут производится в текущий конец файла, независимо от вызовов функции fseek. В некоторых реализациях систем при открытии бинарного файла на обновление ( вторым или третьим символом в параметре mode является символ Ь), индикатор позиции файла первоначально может быть установлен за последними записанными данными; это происходит из-за добавления нулевого символа. [46]
Открытие файла в режиме чтения ( г как первый символ в аргументе mode) вызовет отказ, если файл не существует или не может читаться. Открытие файла в режиме дополнения ( а как первый символ в аргументе mode) направляет все последующие записи в файл в текущий конец файла, вне зависимости от возможных вызовов функции fseek. В некоторых реализациях открытие двоичного файла в режиме дополнения ( Ъ как второй или третий символ в вышеприведенном списке значений аргумента mode) может установить начальное значение индикатора позиции файла для потока за пределами последних записанных данных из-за дополнения нулевыми символами. [47]
Параметр KEY / sey / KEYGT fee ( / / KEYGE ft / задает аргумент поиска. Он указывает, что должна считываться запись, ключ которой соответственно равен, больше или больше либо равен значению key. Если имеются несколько записей с одним и тем же значением ключа, читается первая из них. Позиция файла поел0 считывания устанавливается в начало следующей записи. Параметры KEY, KEYGT и KEYGE могут задавать полный или частичный ключ. [48]
Таким образом, для первой записи указатель позиции файла устанавливается на байт 0 файла. Символическая константа SEEK SET показывает, что указатель позиции файла устанавливается относительно начала файла на величину смещения. На рис. 11.14 показан указатель файла, ссылающийся на структуру FILE в памяти. Указатель позиции файла показывает, что следующий байт, который будет считан или записан, это пятый байт от начала файла. [49]
Запись и чтение происходят, начиная с текущей позиции файла. После записи или чтения эта текущая позиция сдвигается на число переданных байтов. Имеется функция FileSeek, которая осуществляет сдвиг текущей позиции. Благодаря этому появляется возможность записывать информацию в любую позицию файла и читать ее тоже из любой позиции. [50]