Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_C-15.doc
Скачиваний:
2
Добавлен:
06.05.2019
Размер:
90.11 Кб
Скачать

Режимы открытия файлов

"r" — Файл открывается только для чтения. Попытка записи приводит к ошибке. Если файл с указанным именем не существует, fopen возвращает NULL. При успешном открытии файла указатель чтения-записи устанавливается в 0 (начало файла).

"w" — Файл открывается только для записи с усечением. Попытка чтения из файла приводит к ошибке функции чтения. Если файл с указанной спецификацией не существует, он создается в указанной директории. Если файл нельзя создать или он имеет атрибут "только для чтения", fopen возвращает NULL. При успешном открытии файла указатель чтения-записи устанавливается в 0. После закрытия файл имеет новый размер, определяемый текущим положением указателя чтения-записи. Открытие и немедленное закрытие существующего файла приводит к усечению его размера до нулевой длины.

"a" — Файл открывается для дополнения. Отличие от "w" заключается в том, что при успешном открытии файла указатель чтения-записи устанавливается в конец файла. Запись в файл происходит с сохранением имевшейся до этого информации.

"r+" — Файл открывается для чтения и записи. Если файл с указанной спецификацией не существует, fopen возвращает NULL. При успешном открытии файла указатель чтения-записи устанавливается в 0. Если в момент закрытия файла указатель чтения-записи находится левее положения конца файла в момент его открытия, усечения файла не происходит.

"w+" — Файл открывается для чтения и записи. Если файл с указанной спецификацией не существует, он создается. При успешном открытии файла указатель чтения-записи устанавливается в 0.

"a+" — Файл открывается для чтения и дополнения. Если файл с указанной спецификацией не существует, он создается. При успешном открытии файла в этом режиме указатель чтения-записи устанавливается в конец файла.

По умолчанию файл открывается для работы в текстовом режиме (в Windows перевод строки задается парой символов СR–LF, а в Unix-подобных система только одним LF), но можно указать режим явно, записав в строке mode после r, w, a, r+, w+, a+ либо 'b' (двоичный), либо 't' (текстовый). Например "rt","a+b".

Так как операция открытия файла может закончиться неудачей и программа дальше работать не сможет, то необходимо (в обязательном порядке) дополнять вызов fopen проверкой возвращенного ею значения.

Пример

#include <stdio.h>

void main(){

FILE *fp;

fp=fopen("a:\\C\\USER\\file.c","r+");

if(fp == NULL) { puts(" Не удалось открыть файл!");exit(1);}

…}

б) Закрытие файла

После того, как работа с файлом закончена, его нужно закрыть. Это необходимо, чтобы освободить память, использованную для организации обмена с ним. Кроме того, у операционной системы (например, у DOS) могут быть ограничения на количество одновременно открытых программой файлов.

Закрытие файла выполняет функция

int fclose(FILE *fp);

Функция закрывает файловый поток, к которому относится указатель fp (полученный от fopen). Возвращает 0 в случае успешного закрытия. В противном случае (файл не был открыт или ошибка устройства) возвращает EOF.

При закрытии файла, открытого функцией fopen:

— освобождается память, занятая соответствующей структурной переменной FILE, выделенная при открытии файла;

— при записи содержимое буфера обмена переносится на диск;

— обновляется элемент директории, соответствующий файлу (размер, время создания и т. д.).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]