- C 标准库
- C 库 - 首页
- C 库 - <assert.h>
- C 库 - <complex.h>
- C 库 - <ctype.h>
- C 库 - <errno.h>
- C 库 - <fenv.h>
- C 库 - <float.h>
- C 库 - <inttypes.h>
- C 库 - <iso646.h>
- C 库 - <limits.h>
- C 库 - <locale.h>
- C 库 - <math.h>
- C 库 - <setjmp.h>
- C 库 - <signal.h>
- C 库 - <stdalign.h>
- C 库 - <stdarg.h>
- C 库 - <stdbool.h>
- C 库 - <stddef.h>
- C 库 - <stdio.h>
- C 库 - <stdlib.h>
- C 库 - <string.h>
- C 库 - <tgmath.h>
- C 库 - <time.h>
- C 库 - <wctype.h>
- C 标准库资源
- C 库 - 快速指南
- C 库 - 有用资源
- C 库 - 讨论
C 库 - freopen() 函数
C 库函数 FILE *freopen(const char *filename, const char *mode, FILE *stream) 将一个新的文件名与给定的打开流关联,同时关闭流中的旧文件。
语法
以下是 C 库函数 freopen() 的语法:
FILE *freopen(const char *filename, const char *mode, FILE *stream);
参数
以下是 C 库函数 freopen() 的括号内可以使用参数的列表:
- filename : 指向一个空终止字符串的指针,指定要打开的文件名。如果 filename 为 NULL,freopen 函数尝试更改现有流的模式。
- mode : 指向一个空终止字符串的指针,指定要打开文件的模式。此模式字符串可以是:
- r : 以读取方式打开。
- w : 以写入方式打开(将文件截断为零长度)。
- a : 以追加方式打开(写入内容添加到文件末尾)。
- r+ : 以读写方式打开。
- w+ : 以读写方式打开(将文件截断为零长度)。
- a+ : 以读写方式打开(写入内容添加到文件末尾)。
- stream : 指向 FILE 对象的指针,指定要重新打开的流。此流通常与文件关联,但也可能是标准输入、输出或错误流 (stdin、stdout 或 stderr)。
返回值
成功时,freopen 返回指向 FILE 对象的指针。失败时,它返回 NULL 并设置全局变量 errno 以指示错误。
示例 1:将标准输出重定向到文件
此示例将标准输出 (stdout) 重定向到名为 output.txt 的文件。
以下是 C 库 freopen() 函数的示例:
#include <stdio.h> int main() { FILE *fp = freopen("output.txt", "w", stdout); if (fp == NULL) { perror("freopen"); return 1; } printf("This will be written to the file output.txt instead of standard output.\n"); fclose(fp); return 0; }
输出
上述代码在 output.txt 文件中生成以下结果:
This will be written to the file output.txt instead of standard output.
示例 2:将标准输入重定向到文件
此示例将标准输入 (stdin) 重定向到从名为 input.txt 的文件读取,并将内容打印到标准输出。
#include <stdio.h> int main() { FILE *fp = freopen("input.txt", "r", stdin); if (fp == NULL) { perror("freopen"); return 1; } char buffer[100]; while (fgets(buffer, sizeof(buffer), stdin) != NULL) { printf("%s", buffer); } fclose(fp); return 0; }
输出
执行上述代码后,我们在终端得到以下结果,并且 input.txt 的内容保持不变:
Line 1: This is the first line. Line 2: This is the second line.
广告