Глава 12. Библиотечные функции Borland C++ 281
Параметр Действие
w Создание файла для записи. Существующий файл перезаписывается
а Файл открывается для дописывания (Append). Запись позволена только в конец файла. Несуществующий файл создается для записи
г+ Существующий файл открывается для исправления (чтения и записи). При отсутствии файла происходит ошибка
w+ Создается файл для исправления (чтения и записи). Существующий файл перезаписывается
а+ Файл открывается для исправления (чтения и записи) и дописывания в конец файла. Несуществующий файл создается
t Файл открывается в текстовом режиме. Этот параметр используется в сочетании с предыдущими режимами. Например, rt означает открытие текстового файла только для чтения *
b Файл открывается в двоичном режиме. Этот параметр используется в сочетании с предыдущими режимами. Например, rb означает открытие бинарного файла только для чтения
Из табл. 12.1 видно, в чем причина ошибки в программе 12.3: она пытается открыть несуществующий файл в режиме "только для чтения".
Конечно, уметь создавать, открывать и закрывать файлы весьма полезно, но для полноты явно чего-то не хватает.
Чтение и запись файлов
Теперь, умея открывать и закрывать файлы, можно использовать их для хранения данных. Существуют два основных типа информации, которую можно хранить в файлах: текстовая и двоичная, или бинарная. Кроме того, есть два вида доступа к файлам — последовательный (sequential) и произвольный (random). В данном разделе будут рассмотрены последовательные текстовые файлы и двоичные файлы произвольного доступа.
Рассмотрим файлы Autoexec.bat и Config.sys. Оба эти файла текстовые. Длина записанных в них строк может варьироваться в широких пределах; например, длина переменной PATH не обязательно должна равняться восьмидесяти символам. Программы, обрабатывающие подобные файлы, должны считывать строку за строкой до маркера конца файла, по ходу дела разбирая содержимое каждой строки. Изменить информацию, содержащуюся в файле с последовательным доступом, тоже не так просто (как это делается, вы увидите в листинге 12.5).
С другой стороны, возьмем, например, программу, содержащую каталог вашей коллекции компакт-дисков. Записи, хранящие информацию о каж-