FILE *fopen(const char *имя_файла, const char *тип)
Первым
аргументом функции
fopen() является адрес строки, содержащей путевое имя файла. Второй аргумент—это адрес строки, определяющей тип работы с открываемым файлом.
Заданный именем файл открывается в соответствии с указанным типом. Тип может принимать следующие значения:
- "r" — текстовый файл открывается для чтения (read);
- "w"- текстовый файл создается для записи; старое содержимое, если оно было, выбрасывается (write);
- "a" — текстовый файл открывается или создается для записи в конец файла (add);
- "r+" — текстовый файл открывается для исправления, т.е. для чтения и записи;
- "w+"- текстовый файл создается для исправления, старое содержимое, если оно было, выбрасывается;
- "a+" — текстовый файл открывается или создается для исправления уже существующей информации и добавления новой в конец файла.
Функция
fopen() возвращает
указатель на
структуру FILE, который затем присваивается переменной. Этот указатель называют
внутренним. После открытия файла к нему обращаются с использованием указателя на этот файл, имя файла больше не потребуется.
Для обозначения двоичных файлов к типу может добавляться символ
b (например,
"rb",
"wb",
"r+b"). Однако,
ОС UNIX не делает никаких различий между двоичными и текстовыми файлами, следовательно, символ
b игнорируется.
#include <stdio.h>
Пример 1
#include <stdio.h>
int main()
{
FILE *fp;
fp = fopen("logfile", "w");
if (fp==NULL)
printf("Open failed\n");
...
}
Для обеспечения уверенности в успешном открытии файла необходимо проверять код, возвращаемый функцией fopen().
В таблице 1 приводятся результаты успешного открытия файла.
Таблица 1
| чтение "r" | запись "w" | добавление "a" |
файл существует | - | старое содержимое отбрасывается | - |
файл не существует | ошибка | файл создается | файл создается |
Если файл существует и открывается для чтения или дополнения, то он не изменяется при открытии. При открытии существующего файла для записи, он усекается. Если файл, открываемый для записи, не существует, то он будет создан. Однако, открытие несуществующего файла для чтения повлечет ошибку.
Открытие файла с типом "r+", "w+" или "a+" называют открытием для обновления, что означает, что все три типа допускают как чтение, так и запись. При таком открытии выполняются те же действия c существующими и несуществующими файлами, что и при открытии с соответствующими типами "r", "w" и "a". При использовании типов "a" и "a+" запись будет выполняться в конец файла.