ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Работа с файлами. Открытие файла в различных режимах и закрытие файла.Открытие файла Каждому файлу присваивается внутреннее логическое имя, используемое в дальнейшем при обращении к нему. Логическое имя (идентификатор файла) - это указатель на файл, т.е. на область памяти, где содержится вся необходимая информация о файле. Формат объявления указа- теля на файл следующий: FILE * указатель на файл; FILE - идентификатор структурного типа, описанный в стандартной библиотеке stdio.h и содержащий следующую информацию: type struct { short level; - число оставшихся в буфере непрочитанных байт; обычный размер буфера - 512 байт; как только level=0, в буфер из файла читается следующий блок данных; unsigned flags; - флаг статуса файла - чтение, запись, дополнение; char fd; - дескриптор файла, т.е. число, определяющее его номер; unsigned char hold; - непереданный символ, т.е. ungetc-символ; short bsize; - размер внутреннего промежуточного буфера; unsigned char buffer; - значение указателя для доступа внутри буфера, т.е. задает начало буфера, начало строки или текущее значение указателя внутри буфера в зависимости от режима буферизации; unsigned char *curp; - текущее значение указателя для доступа внутри буфера, т.е. задает текущую позицию в буфере для обмена с программой; unsigned istemp; - флаг временного файла; short token; - флаг при работе с файлом; } FILE; Прежде чем начать работать с файлом, т.е. получить возможность чтения или записи информации в файл, его нужно открыть для доступа. Для этого обычно используется функция FILE* fopen (char * имя _ файла, char * режим); она берет внешнее представление - физическое имя файла на носителе (дискета, винчестер) и ставит ему в соответствие логическое имя. Физическое имя, т.е. имя файла и путь к нему задается первым па- раметром - строкой, например, “a:Mas_dat.dat” - файл с именем Mas_dat.dat, находящийся на дискете, “d:\\work\\Sved.txt” - файл с именем Sved.txt, находящийся на винчестере в каталоге work. Внимание! Обратный слеш (\), как специальный символ, в строке записывается дважды. При успешном открытии функция fopen возвращает указатель на файл (в дальнейшем - указатель файла). При ошибке возвращается NULL. Данная ситуация обычно возникает, когда неверно указывается путь к открываемому файлу. Например, если в дисплейном классе нашего университета указать путь, запрещенный для записи (обычно разрешенным яв- ляется d:\work\). Второй параметр - строка, в которой задается режим доступа к файлу: w - файл открывается для записи; если файла с заданным именем нет, то он будет создан; если такой файл существует, то перед открытием прежняя информация уничтожается; r - файл открывается только для чтения; если такого файла нет, то возникает ошибка; a - файл открывается для добавления в конец новой информации; r+ - файл открывается для редактирования данных - возможны и запись, и чтение информации; w+ - то же, что и для r+; a+ - то же, что и для a, только запись можно выполнять в любое место файла; доступно и чтение файла; t - файл открывается в текстовом режиме; b - файл открывается в двоичном режиме. Текстовый режим отличается от двоичного тем, что при открытии файла как текстового пара символов «перевод строки», «возврат каретки» заменяется на один символ: «перевод строки» для всех функций записи данных в файл, а для всех функций вывода символ «перевод строки» теперь заменяется на два символа: «перевод строки», «возврат каретки». По умолчанию файл открывается в текстовом режиме. Пример: FILE *f; - объявляется указатель на файл f; f = fopen ("d:\\work\\Dat_sp.cpp", "w"); - открывается для записи файл с логическим именем f, имеющим физическое имя Dat_sp.cpp, находящийся на диске d, в каталоге work; или более кратко FILE *f = fopen ("d:\\work\\Dat_sp.cpp", "w"); Закрытие файла После работы с файлом доступ к нему необходимо закрыть. Это выполняет функция int fclose (указатель файла). Например, из предыдущего примера файл закрывается так: fclose (f); Для закрытия нескольких файлов введена функция, объявленная следующим образом: void fcloseall (void); Если требуется изменить режим доступа к файлу, то для этого сначала необходимо закрыть данный файл, а затем вновь его открыть, но с другими правами доступа. Для этого используют стандартную функцию: FILE* freopen (char* имя_файла, char * режим, FILE * указатель_файла); Эта функция сначала закрывает файл, объявленный указателем_файла (как это делает функция fopen), а затем открывает файл с именем_файла и правами доступа «режим». В языке Си имеется возможность работы с временными файлами, которые нужны только в процессе работы программы. В этом случае используется функция FILE* tmpfile (void); которая создает на диске временный файл с правами доступа «w+b», после завершения работы программы или после закрытия временного файла он автоматически удаляется. Не нашли, что искали? Воспользуйтесь поиском:
|