Функции библиотеки C -freopen()
Стандартная библиотека C - <stdio.h>
Описание
Функции библиотеки CFILE *freopen(const char *filename, const char *mode, FILE *stream)Связывает новое имя файлаfilenameс заданным открытым потоком,streamи закрывает старый файл в потоке.
Объявление
Ниже приведено объявление функции freopen().
FILE *freopen(const char *filename, const char *mode, FILE *stream)
Параметр
- filename-- Это C-строка, содержащая имя открываемого файла.
- mode-- Это C-строка, содержащая режим доступа к файлу; режимы следующие:
| Mode | Описание |
|---|---|
| "r" | Открывает файл для чтения. Файл должен существовать. |
| "w" | Создаёт пустой файл для записи. Если имя файла совпадает с именем существующего файла, содержимое существующего файла удаляется, и файл рассматривается как новый пустой файл. |
| "a" | Добавляет в файл. Операции записи добавляют данные в конец файла. Если файл не существует, он создаётся. |
| "r+" | Открывает файл для обновления, который можно читать и записывать. Файл должен существовать. |
| "w+" | Создаёт пустой файл для чтения и записи. |
| "a+" | Открывает файл для чтения и дописывания. |
- stream-- Это указатель на объект FILE, который идентифицирует поток, подлежащий повторному открытию.
Возвращаемое значение
Если файл успешно открыт, функция возвращает указатель на объект, идентифицирующий поток. В противном случае она возвращает нулевой указатель.
Пример
Следующий пример демонстрирует использование функции freopen().
#include <stdio.h>
int main ()
{
FILE *fp;
printf("该文本重定向到 stdout\n");
fp = freopen("file.txt", "w+", stdout);
printf("该文本重定向到 file.txt\n");
fclose(fp);
return(0);
}
Давайте скомпилируем и запустим вышеприведённую программу; она отправит следующие строки в стандартный вывод STDOUT, потому что изначально мы не открывали стандартный вывод:
该文本重定向到 stdout
При вызовеfreopen()после этого она связывает стандартный вывод STDOUT с файлом,file.txtи независимо от того, что мы записываем в стандартный вывод STDOUT, это будет записано в file.txt, поэтому файл file.txt будет иметь следующее содержимое.
该文本重定向到 file.txt
Теперь давайте используем следующую программу для просмотра содержимого вышеуказанного файла:
#include <stdio.h>
int main ()
{
FILE *fp;
int c;
fp = fopen("file.txt","r");
while(1)
{
c = fgetc(fp);
if( feof(fp) )
{
break ;
}
printf("%c", c);
}
fclose(fp);
return(0);
}
Другие расширения