#include <stdio.h>
FILE *fopen(const char *fname, const char *mode);
Функция fopen() открывает файл, имя которого задается параметром fname, и возвращает указатель на поток, связанный с этим файлом. Типы операций, которые разрешено выполнять с файлом, определяются параметром mode. Возможные значения параметра mode приведены в таблице 13.1. Строка символов, которая будет играть роль имени реального файла, должна определять его имя, допустимое в данной операционной системе. Эта строка может включать спецификацию пути, если среда поддерживает такую возможность.
В версии C99 к параметрам fname и mode применен квалификатор restrict.
Если функция fopen() успешно открыла заданный файл, она возвращает указатель FILE. Если файл открыть не удается, возвращается нулевой указатель.
| Режим | Назначение | 
|---|---|
| «r» | Открывает текстовый файл для чтения | 
| «w» | Создает текстовый файл для записи | 
| «а» | Дописывает в текстовый файл | 
| «rb» | Открывает двоичный файл для чтения | 
| «wb» | Создает двоичный файл для записи | 
| «ab» | Дописывает в двоичный файл | 
| «r+» | Открывает текстовый файл для чтения и записи | 
| «w+» | Создает текстовый файл для чтения и записи | 
| «а+» | Открывает текстовый файл для чтения и записи | 
| «rb+» или «r+b» | Открывает двоичный файл для чтения и записи | 
| «wb+» или «w+b» | Создает двоичный файл для чтения и записи | 
| «ab+» или «а+b» | Открывает двоичный файл для чтения и записи | 
Как видно из таблицы, файл можно открывать либо в текстовом, либо в двоичном режиме. В текстовом режиме выполняются преобразования некоторых символов. Например, символы новой строки преобразуются в комбинацию кодов возврата каретки (ASCII 13) и конца строки (ASCII 10). В двоичном режиме подобные преобразования не выполняются.
В следующем фрагменте программы иллюстрируется корректный способ открытия файла.
FILE *fp;
if ((fp = fopen("test", "w"))==NULL) {
  printf("He удается открыть файл.\n");
  exit(1);
}
Благодаря такому методу перед записью в файл выявляется любая ошибка, возникающая при его открытии, например, использование защищенного от записи или заполненного диска.
Если с помощью функции fopen() открывается файл для вывода (записи), то любой уже существующий файл с заданным именем удаляется, а вместо него создается новый. Если файл с таким именем не существует, он будет создан. Чтобы открыть файл для выполнения операций чтения, нужно, чтобы этот файл уже существовал. В противном случае функция возвратит значение ошибки. Чтобы добавить данные в конец файла, необходимо использовать режим «а». Если окажется, что указанный файл не существует, он будет создан.
Осуществляя доступ к файлу, который открыт для чтения и записи, не следует сразу за операцией ввода выполнять операцию вывода, не прибегнув прежде к промежуточному вызову одной из следующих функций: fflush(), fseek(), fsetpos() или rewind(). Нельзя также сразу за операцией вывода выполнять операцию ввода, не прибегнув прежде к промежуточному вызову одной из перечисленных выше функций. Исключением является момент достижения конца файла во время операции ввода, т.e. в конце файла вывод может непосредственно следовать за вводом.
Максимальное количество файлов, которые могут быть открыты одновременно, ограничивается значением FOPEN_MAX, определенным в заголовке <stdio.h>.
Пример
Следующий фрагмент открывает файл с названием TEST для чтения-записи в двоичном режиме.
FILE *fp;
if((fp=fopen("test", "rb+"))==NULL) {
  printf("He удается открыть файл.\n");
  exit(1);
}
Зависимые функции
fclose() fread() fwrite() putc() getc()

 
						 
						 
						 
						 
					








