The ungetc() function shall push the byte specified by c
(converted to an unsigned char) back onto the input stream pointed to
by stream. The pushed-back bytes shall be returned by subsequent reads
on that stream in the reverse order of their pushing. A successful intervening
call (with the stream pointed to by stream) to a file-positioning
function ( fseek(), fsetpos(), or rewind()) shall discard
any pushed-back bytes for the stream. The external storage corresponding to
the stream shall be unchanged.
One byte of push-back shall be provided. If ungetc() is called too many
times on the same stream without an intervening read or file-positioning
operation on that stream, the operation may fail.
If the value of c equals that of the macro EOF, the operation shall fail
and the input stream shall be left unchanged.
A successful call to ungetc() shall clear the end-of-file indicator for
the stream. The value of the file-position indicator for the stream after
reading or discarding all pushed-back bytes shall be the same as it was before
the bytes were pushed back. The file-position indicator is decremented by each
successful call to ungetc(); if its value was 0 before a call, its
value is unspecified after the call.
Portions of this text are reprinted and reproduced in electronic form from IEEE
Std 1003.1, 2003 Edition, Standard for Information Technology -- Portable
Operating System Interface (POSIX), The Open Group Base Specifications Issue
6, Copyright (C) 2001-2003 by the Institute of Electrical and Electronics
Engineers, Inc and The Open Group. In the event of any discrepancy between
this version and the original IEEE and The Open Group Standard, the original
IEEE and The Open Group Standard is the referee document. The original
Standard can be obtained online at http://www.opengroup.org/unix/online.html