Открытие файла

Поток связывается с конкретным файлом с помощью операции открытия файла. Если файл открыт, то можно осуществлять обмен информацией между файлом и программой. Открытие файла осуществляется с помощью функции

FILE * fopen (const char *filename, const char * mode);

Здесь filename — указатель на строку, в которой должно быть физическое имя файла, содержащее имя диска, последовательность папок и имя файла с расширением. Второй параметр mode определяет тип (права) доступа к файлу а, значит, и тип операций, разрешённых над ним. Параметр может принимать следующие основные значения:

w — создаёт файл (первая буква слова w rite). Файл с записанным в filename именем не должен существовать в указанной папке. В противном случае он будет уничтожен. Указанные в filename папки должны, конечно, существовать;

r — открывает файл для чтения (первая буква слова r ead). Наоборот, файл должен существовать в указанной папке;

a — добавляет данные только в конец файла. Если файл не существует, то он будет создан, то есть этот режим в таком случае аналогичен режиму w. Но в отличие от режима w, если файл существует, то уничтожаться не будет.

Кроме этих трёх, можно использовать следующие вспомогательные режимы:

w+ — создаёт файл как для чтения, так и для создания, то есть для записи. В отличие от режима w файл не удаляется, если существует;

r+ — открывает файл как для чтения, так и для записи. Если файл не существует, то ошибки не будет, он будет создан;

a+ — аналогичен режиму a, только добавление можно выполнять в любое место файла, не обязательно в конец.

После этих символов можно дописать букву ‘b’, если мы будем работать с файлом в двоичном режиме, или ‘t’, если в текстовом. Например, значением параметра mode может быть строка “wb”, что означает, что файл будет создан как двоичный. Если ни одна из этих букв не указана, то по умолчанию подразумевается текстовый режим.

Обе строки в функции fopen можно задавать как с помощью переменных, так и в виде константы. В имени файла символ ‘\’ должен быть продублирован, так как он используется для записи управляющего символа (‘\n’,’\t’ и другие).

Функция fopen выполняет следующие действия: открывает поток; связывает файл с этим потоком и возвращает указатель на структуру типа FILE. Если файл не может быть открыт, функция возвращает NULL. Причиной этого может быть отсутсвие указанной в fname папки, недостаточный объём памяти на диске при попытке записи на него, отсутствие файла при попытке чтения и другие.

Например,

FILE * fp;

fp=fopen("d:\\ANA\\cpp\\2005_06\\File1\\ bf1.dat","rb");

if (fp==NULL) { cout<<”Error “; exit(1); }

Оператор присваивания и оператор if можно объединить вместе следующим образом:

if((fp=fopen("d:\\ANA\\cpp\\2005_06\\File1\\ bf1.dat","rb"))==NULL)

{ cout<<”Error “; exit(1); }

При этом, так как операция присваивания имеет меньший приоритет, чем операция сравнения, то нужны внутренние скобки в операторе if. Этот фрагмент программы открывает существующий файл bf1.dat для чтения в двоичном режиме.


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



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