%>
关闭流 (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
的示例。