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