Provided by: manpages-posix-dev_2013a-2_all bug

PROLOG

       This  manual  page  is part of the POSIX Programmer's Manual.  The Linux implementation of
       this interface may differ (consult the corresponding Linux  manual  page  for  details  of
       Linux behavior), or the interface may not be implemented on Linux.

NAME

       ungetc — push byte back into input stream

SYNOPSIS

       #include <stdio.h>

       int ungetc(int c, FILE *stream);

DESCRIPTION

       The functionality described on this reference page is aligned with the ISO C standard. Any
       conflict between the requirements described here and the ISO C standard is  unintentional.
       This volume of POSIX.1‐2008 defers to the ISO C standard.

       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(),  fseeko(),  fsetpos(),  or  rewind())  or fflush() 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 all pushed-back bytes have  been
       read,  or  discarded  by  calling  fseek(),  fseeko(),  fsetpos(),  or  rewind()  (but not
       fflush()), 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.

RETURN VALUE

       Upon successful completion, ungetc() shall return the byte pushed back  after  conversion.
       Otherwise, it shall return EOF.

ERRORS

       No errors are defined.

       The following sections are informative.

EXAMPLES

       None.

APPLICATION USAGE

       None.

RATIONALE

       None.

FUTURE DIRECTIONS

       None.

SEE ALSO

       Section 2.5, Standard I/O Streams, fseek(), getc(), fsetpos(), read(), rewind(), setbuf()

       The Base Definitions volume of POSIX.1‐2008, <stdio.h>

COPYRIGHT

       Portions  of  this  text  are  reprinted  and  reproduced in electronic form from IEEE Std
       1003.1, 2013 Edition, Standard for Information Technology  --  Portable  Operating  System
       Interface  (POSIX),  The Open Group Base Specifications Issue 7, Copyright (C) 2013 by the
       Institute of Electrical and Electronics Engineers, Inc  and  The  Open  Group.   (This  is
       POSIX.1-2008  with  the  2013  Technical  Corrigendum  1  applied.)  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.unix.org/online.html .

       Any typographical or formatting errors that appear in this page are most  likely  to  have
       been  introduced  during  the conversion of the source files to man page format. To report
       such errors, see https://www.kernel.org/doc/man-pages/reporting_bugs.html .