关闭流 (fclose) 或关闭所有打开的流 (_fcloseall)。
语法
int fclose(
FILE *stream
);
int _fcloseall( void );
参数
stream
指向 FILE 结构的指针。
返回值
如果已成功关闭流,则 fclose 返回 0。 _fcloseall 返回已关闭流的总数。 这两个函数都返回 EOF,表示出现错误。
备注
fclose 函数关闭 stream。 如果 stream 为 NULL,则会调用无效的参数处理程序,如参数验证中所述。 如果允许继续执行,则 fclose 将 errno 设置为 EINVAL 并返回 EOF。 建议在调用此函数之前务必检查 stream 指针。
有关返回代码的详细信息,请参阅 errno、_doserrno、_sys_errlist 和 _sys_nerr。
_fcloseall函数将关闭所有打开的流,stdin、stdout、stderr(以及在 MS-DOS 中的 _stdaux 和 _stdprn)除外。 它还将关闭并删除 tmpfile 所创建的任何临时文件。 在这两个函数中,与流相关联的所有缓冲区在关闭前都会进行刷新。 系统分配的缓冲区在流关闭时释放。 用户使用 setbuf 和 setvbuf 分配的缓冲区不会自动释放。
注意
将 fclose 或 _fcloseall 函数用于关闭流时,基础文件描述符和 OS 文件句柄(或套接字)都将被关闭。 因此,如果文件最初作为文件句柄或文件描述符打开并使用 fclose 关闭,则不要同时调用 _close 来关闭文件描述符;不要调用 Win32 函数 CloseHandle 来关闭文件句柄。
fclose 和 _fcloseall 包含可抵御来自其他线程干扰的代码。 有关 fclose 的非锁定版本,请参阅 _fclose_nolock。
默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态。
要求
| 函数 | 必需的标头 |
|---|---|
fclose |
<stdio.h> |
_fcloseall |
<stdio.h> |
有关兼容性的详细信息,请参阅 兼容性。
示例
请参阅 fopen 的示例。