clearerr_s
Resets the error indicator for a stream. This function is a version of clearerr
with security enhancements as described in Security features in the CRT.
Syntax
errno_t clearerr_s(
FILE *stream
);
Parameters
stream
Pointer to FILE
structure
Return value
Zero if successful; EINVAL
if stream
is NULL
.
Remarks
The clearerr_s
function resets the error indicator and end-of-file indicator for stream
. Error indicators aren't automatically cleared; once the error indicator for a specified stream is set, operations on that stream continue to return an error value until clearerr_s
, clearerr
, fseek
, fsetpos
, or rewind
is called.
If stream
is NULL
, the invalid parameter handler is invoked, as described in Parameter validation. If execution is allowed to continue, this function sets errno
to EINVAL
and returns EINVAL
.
By default, this function's global state is scoped to the application. To change this behavior, see Global state in the CRT.
Requirements
Routine | Required header |
---|---|
clearerr_s |
<stdio.h> |
For more compatibility information, see Compatibility.
Example
// crt_clearerr_s.c
// This program creates an error
// on the standard input stream, then clears
// it so that future reads won't fail.
#include <stdio.h>
int main( void )
{
int c;
errno_t err;
// Create an error by writing to standard input.
putc( 'c', stdin );
if( ferror( stdin ) )
{
perror( "Write error" );
err = clearerr_s( stdin );
if (err != 0)
{
abort();
}
}
// See if read causes an error.
printf( "Will input cause an error? " );
c = getc( stdin );
if( ferror( stdin ) )
{
perror( "Read error" );
err = clearerr_s( stdin );
if (err != 0)
{
abort();
}
}
}
Input
n
Output
Write error: Bad file descriptor
Will input cause an error? n
See also
Error handling
Stream I/O
clearerr
_eof
feof
ferror
perror
, _wperror