ungetc
—push data back into a stream#include <stdio.h> int ungetc(int c, FILE *stream); int _ungetc_r(struct _reent *reent, int c, FILE *stream);
Description
ungetc
is used to return bytes back to stream to be read again.
If c is EOF, the stream is unchanged. Otherwise, the unsigned
char c is put back on the stream, and subsequent reads will see
the bytes pushed back in reverse order. Pushed byes are lost if the
stream is repositioned, such as by fseek
, fsetpos
, or
rewind
.
The underlying file is not changed, but it is possible to push back something different than what was originally read. Ungetting a character will clear the end-of-stream marker, and decrement the file position indicator. Pushing back beyond the beginning of a file gives unspecified behavior.
The alternate function _ungetc_r
is a reentrant version. The
extra argument reent is a pointer to a reentrancy structure.
Returns
The character pushed back, or EOF
on error.
Portability
ANSI C requires ungetc
, but only requires a pushback buffer of one
byte; although this implementation can handle multiple bytes, not all
can. Pushing back a signed char is a common application bug.
Supporting OS subroutines required: sbrk
.