当前位置: 首页 > 文档资料 > C 标准库 中文版 >

FILE *freopen(const char *filename, const char *mode, FILE *stream)

优质
小牛编辑
131浏览
2023-12-01

描述 (Description)

C库函数FILE *freopen(const char *filename, const char *mode, FILE *stream)将新filename与给定的打开流相关联,同时关闭流中的旧文件。

声明 (Declaration)

以下是freopen()函数的声明。

FILE *freopen(const char *filename, const char *mode, FILE *stream)

参数 (Parameters)

  • filename - 这是包含要打开的文件名的C字符串。

  • mode - 这是包含文件访问模式的C字符串。 它包括 -

Sr.No.模式和说明
1

"r"

打开文件进行阅读。 该文件必须存在。

2

"w"

创建一个用于写入的空文件。 如果已存在具有相同名称的文件,则其内容将被删除,并且该文件将被视为新的空文件。

3

"a"

附加到文件。 写操作会在文件末尾附加数据。 如果文件不存在,则创建该文件。

4

"r+"

打开文件以更新读取和写入。 该文件必须存在。

5

"w+"

为读取和写入创建一个空文件。

6

"a+"

打开文件以进行阅读和追加。

  • stream - 这是指向FILE对象的指针,该对象标识要重新打开的流。

返回值 (Return Value)

如果文件成功重新打开,则该函数返回指向标识流的对象的指针,否则返回空指针。

例子 (Example)

以下示例显示了freopen()函数的用法。

#include <stdio.h>
int main () {
   FILE *fp;
   printf("This text is redirected to stdout\n");
   fp = freopen("file.txt", "w+", stdout);
   printf("This text is redirected to file.txt\n");
   fclose(fp);
   return(0);
}

让我们编译并运行上面的程序,它将在STDOUT发送以下行,因为最初我们没有打开stdout -

This text is redirected to stdout

在调用freopen() ,它将STDOUT与文件file.txt相关联,所以无论我们在STDOUT中写入什么内容都在file.txt 。 因此,文件file.txt将具有以下内容。

This text is redirected to 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);
}