| ![[Previous]](../prev.gif) | ![[Contents]](../contents.gif) | ![[Index]](../keyword_index.gif) | ![[Next]](../next.gif) | 
Push a character back onto an input stream
#include <stdio.h>
int ungetc( int c, 
            FILE *fp );
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
The ungetc() function pushes the character specified by c back onto the input stream pointed to by fp. This character will be returned the next time that you read from the stream. The pushed-back character is discarded if you call fflush() or a file-positioning function (fseek(), fsetpos(), or rewind()) before performing the next read operation.
Only one character (the most recent one) of pushback is guaranteed.
The ungetc() function clears the end-of-file indicator, unless the value of c is EOF.
The character pushed back.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main( void )
  {
    FILE *fp;
    int c;
    long value;
    fp = fopen( "file", "r" );
    value = 0;
    c = fgetc( fp );
    while( isdigit(c) ) {
      value = value*10 + c - '0';
      c = fgetc( fp );
    }
    ungetc( c, fp ); /* put last character back */
    printf( "Value=%ld\n", value );
    fclose( fp );
    return EXIT_SUCCESS;
  }
| Safety: | |
|---|---|
| Cancellation point | Yes | 
| Interrupt handler | No | 
| Signal handler | No | 
| Thread | Yes | 
fopen(), getc(), getc_unlocked(), ungetwc()
| ![[Previous]](../prev.gif) | ![[Contents]](../contents.gif) | ![[Index]](../keyword_index.gif) | ![[Next]](../next.gif) |