Функция freopen

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

FILE * freopen( const char * fname, const char * modeopen, FILE * filestream );

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

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

Описание

Функция freopen сначала пытается закрыть любой файл уже связанный с потоком, который указан в параметре filestream. Независимо от того, был поток успешно отсоединён или нет, freopen открывает файл, имя которого передается в первом параметре, fname, то есть связывает файл fname с  только что отсоединенным потоком так же, как и функция fopen, используя режим доступа, указанное в качестве второго параметра, mode.
Эта функция особенно полезна для перенаправления потоков, таких как: стандартный ввод, стандартный вывод и стандартный поток ошибок, к определенным файлам (см. пример ниже).

Параметры:

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

Дополнительно используется символ «b», для указания двоичного режима открытия файла. Для получения дополнительной информации об этом режиме, обратитесь к функции fopen.

  • filestream
    Указатель на объект типа FILE, который соединен с потоком.

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

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

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

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

#include <iostream>
#include <cstdio>

int main ()
{
  freopen("file.txt", "w", stdout); // перенаправить стандартный поток вывода в файл
  std::cout << "Это предложение будет перенаправлено в файл";
  fclose (stdout);
  return 0;
}

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

Этот пример кода перенаправляет вывод, который, как правило, идет на стандартный вывод в файл с именем file.txt, что после этого программа выполняется содержит:

CppStudio.com
Это предложение будет перенаправлено в файл.
Автор: admin
Дата: 10.09.2012
Поделиться:

Комментарии

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

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