Функции библиотеки 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);
}

Стандартная библиотека C - <stdio.h>

Другие расширения