ungetc

Defined in header <stdio.h>
int ungetc( int ch, FILE *stream );

Puts the character ch back to the given file stream.

Parameters

ch - character to be put back
stream - file stream to put the character back to

Return value

On success ch is returned.

On failure EOF is returned and the given stream remains unchanged.

Example

ungetc with error checking.

#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    FILE* fp = fopen("test.txt", "w");
    fputs("abc\n", fp);
    fclose(fp);
    fp = fopen("test.txt", "r");
 
    /* Read  "abc".  */
    /* Write "abbc". */
    char ch;
    int ret_code;
    ch=fgetc(fp);   /* read 'a' */
    putchar(ch);
    ch=fgetc(fp);   /* read 'b' */
    putchar(ch);
 
    ret_code = ungetc(ch,fp);   /* push 'b' back to input file */
    /* Test whether EOF was reached. */
    if (ret_code == EOF)
       if (ferror(fp)) 
       {
          perror("ungetc()");
          fprintf(stderr,"ungetc() failed in file %s at line # %d\n", __FILE__,__LINE__-6);
          exit(EXIT_FAILURE);
       }
 
    ch=fgetc(fp);   /* reread 'b' */
    putchar(ch);
    ch=fgetc(fp);   /* read 'c'   */
    putchar(ch);
 
    return EXIT_SUCCESS;
}

Output:

abbc

References

  • C11 standard (ISO/IEC 9899:2011):
    • 7.21.7.10 The ungetc function (p: 334)
  • C99 standard (ISO/IEC 9899:1999):
    • 7.19.7.11 The ungetc function (p: 300)
  • C89/C90 standard (ISO/IEC 9899:1990):
    • 4.9.7.11 The ungetc function

See also

gets a character from a file stream
(function)
C++ documentation for ungetc
doc_C_Language
2016-10-10 18:36:36
Comments
Leave a Comment

Please login to continue.