Функция freopen () в C ++ пытается открыть новый файл с файловым потоком, который связан с другим открытым файлом.
Функция freopen () определена в заголовочном файле.
freopen () прототип
ФАЙЛ * freopen (const char * filename, const char * mode, FILE * stream);
Функция freopen сначала пытается закрыть файл, открытый с помощью потока. После закрытия файла он пытается открыть имя файла, указанное аргументом filename (если оно не равно нулю), в режиме, заданном параметром mode. Наконец, он связывает файл с потоком файлового потока.
Если filename является нулевым указателем, функция freopen () пытается повторно открыть файл, который уже связан с потоком.
freopen () Параметры
- filename: Новый файл для открытия.
- mode: режим открытия файла. Ниже представлены различные типы режима доступа к файлам:
Режим доступа к файлам | Интерпретация | Если файл существует | Если файл не существует |
---|---|---|---|
"р" | Открывает файл в режиме чтения | Читать с начала | ошибка |
"ш" | Открывает файл в режиме записи | Стереть все содержимое | Создать новый файл |
"а" | Открывает файл в режиме добавления | Начни писать с конца | Создать новый файл |
"г +" | Открывает файл в режиме чтения и записи | Читать с начала | ошибка |
"w +" | Открывает файл в режиме чтения и записи | Стереть все содержимое | Создать новый файл |
"а +" | Открывает файл в режиме чтения и записи | Начни писать с конца | Создать новый файл |
- stream: файловый поток, с которым нужно связать имя файла.
freopen () Возвращаемое значение
Функция freopen () возвращает:
- поток при успехе.
- NULL в случае ошибки.
Пример: как работает функция freopen ()?
#include #include int main() ( FILE* fp = fopen("test1.txt","w"); fprintf(fp,"%s","This is written to test1.txt"); if (freopen("test2.txt","w",fp)) fprintf(fp,"%s","This is written to test2.txt"); else ( printf("freopen failed"); exit(1); ) fclose(fp); return 0; )
При запуске программы:
В test1.txt будет записано следующее: Это будет записано в test1.txt Следующее будет записано в test2.txt: Это будет записано в test2.txt