fclose, _fcloseall
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at fclose, _fcloseall.
Closes a stream (fclose
) or closes all open streams (_fcloseall
).
Syntax
int fclose(
FILE *stream
);
int _fcloseall( void );
Parameters
stream
Pointer to FILE
structure.
Return Value
fclose
returns 0 if the stream is successfully closed. _fcloseall
returns the total number of streams closed. Both functions return EOF
to indicate an error.
Remarks
The fclose
function closes stream
. If stream
is NULL
, the invalid parameter handler is invoked, as described in Parameter Validation. If execution is allowed to continue, fclose
sets errno
to EINVAL
and returns EOF
. It is recommended that the stream
pointer always be checked prior to calling this function.
See _doserrno, errno, _sys_errlist, and _sys_nerr for more information on these, and other, error codes.
The _fcloseall
function closes all open streams except stdin
, stdout
, stderr
(and, in MS-DOS, _stdaux
and _stdprn
). It also closes and deletes any temporary files created by tmpfile
. In both functions, all buffers associated with the stream are flushed prior to closing. System-allocated buffers are released when the stream is closed. Buffers assigned by the user with setbuf
and setvbuf
are not automatically released.
Note: When these functions are used to close a stream, the underlying file descriptor and OS file handle (or socket) are closed, as well as the stream. Thus, if the file was originally opened as a file handle or file descriptor and is closed with fclose
, do not also call _close
to close the file descriptor; do not call the Win32 function CloseHandle
to close the file handle.
fclose
and _fcloseall
include code to protect against interference from other threads. For non-locking version of a fclose
, see _fclose_nolock
.
Requirements
Function | Required header |
---|---|
fclose |
<stdio.h> |
_fcloseall |
<stdio.h> |
For additional compatibility information, see Compatibility in the Introduction.
Example
See the example for fopen.
.NET Framework Equivalent
See Also
Stream I/O
_close
_fdopen, _wfdopen
fflush
fopen, _wfopen
freopen, _wfreopen