Прототип функции 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
, что после этого программа выполняется содержит:
Комментарии