Функция fopen

Прототип функции fopen:

FILE * fopen( const char * fname, const char * modeopen );

Заголовочный файл

Название Язык
stdio.h С
cstdio С++

Описание

Функция fopen открывает файл, имя которого указано в параметре fname и связывает его с потоком, который может быть идентифицирован для выполнения различных операций с файлом. Операции с потоком, выполнение которых разрешено определяются параметром modeopen. Cреда программирования поддерживает, по крайней мере, FOPEN_MAX — количество открытых файлов одновременно, где FOPEN_MAX является макро-константа, определенная в <cstdio>.

Параметры:

  • fname
    Си-строка, содержащая имя файла, который необходимо открыть. Этот параметр должен соответствовать правилам именования файлов в используемой системе, и может включать в себя путь, если система поддерживает его.
  • modeopen
    Строка, содержащая режим доступа к файлу. Далее приведён список режимов и их описание:
«r» Режим открытия файла для чтения. Файл должен существовать.
«w» Режим создания пустого файла для записи. Если файл с таким именем уже существует его содержимое стирается, и файл рассматривается как новый пустой файл.
«a» Дописать в файл. Операция добавления данных в конец файла. Файл создается, если он не существует.
«r+» Режим открытия фала для обновления чтения и записи. Этот файл должен существовать.
«w+» Создаёт пустой файл для чтения и записи. Если файл с таким именем уже существует его содержимое стирается, и файл рассматривается как новый пустой файл.
«a+» Открыть файл для чтения и добавления данных. Все операции записи выполняются в конец файла, защищая предыдущее содержания файла от случайного изменения. Вы можете изменить позицию (FSEEK, перемотка назад) внутреннего указателя на любое место файла только для чтения, операции записи будет перемещать указатель в конец файла, и только после этого дописывать новую информацию. Файл создается, если он не существует.

Выше указанные спецификаторы режима доступа к файлу используются только в текстовых файлах. Для того, чтобы открыть двоичный файл, символ b должен быть включен в режим доступа. Этот дополнительный символ b может быть добавлен в конец строки, что даёт следующие режимы доступа к бинарным файлам: rb, wb, ab, r+b, w+b, a+b или может быть вставлен между буквой и знаком +, в случае со смешанными режимами: rb+, wb+, ab+.

В последовательности спецификаторов доступа могут находиться дополнительные символы, хотя они никак не влияют на работу программы. Например, символ ‘t‘ иногда прилагается, чтобы показать, что файл является текстовым.

В случае текстовых файлов, в зависимости от среды, в которой работает приложение, некоторые специальные символы преобразования могут в операциях ввода/вывода могут быть адаптированы к системе, из-за специфического формата текстового файла. Во многих системах, например, UNIX-системах, это не имеет значения ни для открытия файла в текстовом режиме ни для открытия файла в двоичном режиме. Оба попадают точно так же, но адаптация служебных символов рекомендуется для лучшей переносимости.

Для смешанных режимов (те, которые включают в себя знак «+»), когда разрешены операции чтения и записи (или добавления), следует обнулить поток функцией fflush или изменить позицию внутреннего указателя (fseek fsetpos, rewind) после операции чтения, за которой следует операция записи и, наоборот, после операции записи, за которой следует операция чтения.

Возвращаемое значение

Если файл был успешно открыт, функция возвращает указатель на объект файла, который используется для идентификации потока и выполнения операций с файлом. В противном случае, возвращается нулевой указатель.

Пример: исходный код программы

//пример использования функции fopen

#include <iostream>
#include <cstdio>

int main ()
{
  FILE * ptrFile = fopen("file.txt", "w");

  if (ptrFile != NULL)
  {
    fputs("Пример использования функции fopen ", ptrFile); // записать строку в файл
    fclose (ptrFile);
  }
  return 0;
}

Пример работы программы

Записать в только что открытый файл file.txt строку "Пример использования функции fopen".

Автор: admin
Дата: 10.09.2012
Поделиться:

Комментарии

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.