Функция fopen()функция открытия файла.
FILE *fopen(const char *имя_файла, const char *тип)
Первым аргументом функции fopen() является адрес строки, содержащей путевое имя файла. Второй аргумент—это адрес строки, определяющей тип работы с открываемым файлом.
Заданный именем файл открывается в соответствии с указанным типом. Тип может принимать следующие значения:
Функция fopen() возвращает указатель на структуру FILE, который затем присваивается переменной. Этот указатель называют внутренним. После открытия файла к нему обращаются с использованием указателя на этот файл, имя файла больше не потребуется.
Для обозначения двоичных файлов к типу может добавляться символ b (например, "rb", "wb", "r+b"). Однако, ОС UNIX не делает никаких различий между двоичными и текстовыми файлами, следовательно, символ b игнорируется.
Объявление прототипа функции fopen() находится в файле заголовков stdio.h, поэтому программы, использующие эту функцию, должны включать следующую директиву препроцессора:
#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+" запись будет выполняться в конец файла.