Функція freopen () у C ++ намагається відкрити новий файл із потоком файлів, який пов'язаний з іншим відкритим файлом.
Функція freopen () визначена у файлі заголовка.
прототип freopen ()
FILE * freopen (const char * ім'я файлу, режим const char *, потік FILE *);
Функція freopen спочатку намагається закрити файл, відкритий за допомогою потоку. Після закриття файлу він намагається відкрити ім'я файлу, вказане в аргументі ім'я файлу (якщо воно не є нульовим), у режимі, заданому режимом аргументу. Нарешті, він пов'язує файл із потоком потоку файлів.
Якщо ім'я файлу є нульовим покажчиком, функція freopen () намагається знову відкрити файл, який вже пов'язаний з потоком.
Параметри freopen ()
- ім'я файлу: Новий файл для відкриття.
- mode: Режим, за допомогою якого можна відкрити файл. Різні типи режиму доступу до файлів:
Режим доступу до файлів | Інтерпретація | Якщо файл існує | Якщо файл не існує |
---|---|---|---|
"r" | Відкриває файл у режимі читання | Читати з самого початку | Помилка |
"ш" | Відкриває файл у режимі запису | Стерти весь вміст | Створити новий файл |
"а" | Відкриває файл у режимі додавання | Почніть писати з кінця | Створити новий файл |
"r +" | Відкриває файл у режимі читання та запису | Читати з самого початку | Помилка |
"w +" | Відкриває файл у режимі читання та запису | Стерти весь вміст | Створити новий файл |
"a +" | Відкриває файл у режимі читання та запису | Почніть писати з кінця | Створити новий файл |
- потік: Потік файлу, з яким потрібно пов’язати ім’я файлу.
freopen () Повернене значення
Функція freopen () повертає:
- потік успіху.
- НУЛЬ при відмові.
Приклад: Як працює функція 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