C 参考手册
- C 语言
- C 关键词
- 预处理器
- C 标准库头文件
- 类型支持
- 程序支持工具
- 变参数函数
- 错误处理
- 动态内存管理
- 日期和时间工具
- 字符串库
- 算法
- 数值
- 文件输入/输出
- gets, gets_s
- printf, fprintf, sprintf, snprintf, printf_s, fprintf_s, sprintf_s, snprintf_s
- fopen, fopen_s
- fputc, putc
- fputs
- getchar
- putchar
- FILE
- fpos_t
- stdin, stdout, stderr
- freopen, freopen_s
- fwide
- setbuf
- setvbuf
- fclose
- fflush
- fread
- fwrite
- fgetc, getc
- fgets
- puts
- ungetc
- fgetwc
- fgetws
- fputwc, putwc
- fputws
- getwchar
- putwchar
- ungetwc
- scanf, fscanf, sscanf, scanf_s, fscanf_s, sscanf_s
- wscanf, fwscanf, swscanf, wscanf_s, fwscanf_s, swscanf_s
- vscanf, vfscanf, vsscanf, vscanf_s, vfscanf_s, vsscanf_s
- vwscanf, vfwscanf, vswscanf, vwscanf_s, vfwscanf_s, vswscanf_s
- wprintf, fwprintf, swprintf, wprintf_s, fwprintf_s, swprintf_s, snwprintf_s
- vprintf, vfprintf, vsprintf, vsnprintf, vprintf_s, vfprintf_s, vsprintf_s, vsnprintf_s
- vwprintf, vfwprintf, vswprintf, vwprintf_s, vfwprintf_s, vswprintf_s, vsnwprintf_s
- ftell
- fgetpos
- fseek
- fsetpos
- rewind
- clearerr
- feof
- ferror
- perror
- remove
- rename
- tmpfile, tmpfile_s
- tmpnam, tmpnam_s
- 本地化支持
- 原子操作库
- 线程支持库
- 实验性 C 标准库
- 有用的资源
- 符号索引
- 注释
freopen, freopen_s
定义于头文件 <stdio.h>
|
||
(1) | ||
(C99 前) | ||
(C99 起) | ||
(2) | (C11 起) | |
1) 首先,试图关闭与
stream
关联的文件,忽略任何错误。然后,若 filename
非空,则试图用 mode
打开 filename
所指定的文件,如同用 fopen ,然后将该文件与 stream
所指向的文件流关联。若 filename
为空指针,则函数试图重打开已与 stream
关联的文件(此情况下是否允许模式改变是实现定义的)。2) 同 (1) ,除了以 fopen_s 中的方式处理
mode
,并将指向文件流的指针写入 newstreamptr
,还在运行时检测下列错误,并调用当前安装的制约处理函数:
-
newstreamptr
是空指针 -
stream
是空指针 -
mode
是空指针
-
- 同所有边界检查函数,
freopen_s
仅若实现定义了 __STDC_LIB_EXT1__ ,且用户在包含<stdio.h>
前定义 __STDC_WANT_LIB_EXT1__ 为整数常量 1 才保证可用。
参数
filename | - | 要关联到文件流的文件名 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
mode | - | 确定文件访问模式的空终止字符串
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||
stream | - | 要修改的文件流 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
newstreamptr | - | 指向函数存储结果所用指针的指针(输出参数) |
返回值
1) 成功时为
stream
值的副本,失败时为空指针。2) 成功时为零(并将
stream
值的副本写入 *newstreamptr
),失败时为非零(并写入空指针到 *newstreamptr
,除非 newstreamptr
自身为空指针)。注意
freopen
是一旦由 I/O 操作或 fwide 建立面向后,改变文件流窄/宽面向的唯一方式。
示例
下列代码重定向 stdout
到文件。
运行此代码
输出:
stdout is printed to console
引用
- C11 standard (ISO/IEC 9899:2011):
- 7.21.5.4 The freopen function (p: 307)
- K.3.5.2.2 The freopen_s function (p: 590)
- C99 standard (ISO/IEC 9899:1999):
- 7.19.5.4 The freopen function (p: 272-273)
- C89/C90 standard (ISO/IEC 9899:1990):
- 4.9.5.4 The freopen function
参阅
(C11) |
打开文件 (函数) |
关闭文件 (函数) |