##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# ungetc

From cppreference.com
< c‎ | io

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

Puts the character `ch` back to the given file stream.

### [edit] Parameters

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

### [edit] Return value

On success `ch` is returned.

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

### [edit] Example

ungetc with error checking

Run this code

    #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

### [edit] See also

fgetc getc | gets a character from a file stream (function) [edit]
C++ documentation for ungetc

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=c/io/ungetc&oldid=69911"