---
name: "ungetc"
section: "3"
platform: "macos"
package: "Libc"
version: "1752.120.2"
release: "macOS 26.5"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/ungetc"
---

# ungetc(3)

un-get character from input stream

## NAME

**ungetc** – un-get character from input stream

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

**#include \<stdio.h\>**

*int*\

**ungetc**(*int c*, *FILE \*stream*);

## DESCRIPTION

The **ungetc**() function pushes the character *c* (converted to an unsigned char) back onto the input stream pointed to by *stream*. The pushed-back characters will be returned (in reverse order) by subsequent reads on the stream. A successful intervening call to one of the file positioning functions ((fseek) 3, [fsetpos(3)](/fsetpos/3.md), or [rewind(3)](/rewind/3.md)), using the same stream, will discard the pushed-back characters.

Only one character of push-back is guaranteed, but as long as there is sufficient memory, an effectively infinite amount of push-back is allowed.

If a character is successfully pushed-back, the end-of-file indicator for the stream is cleared. 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 VALUES

The **ungetc**() function returns the character pushed-back after the conversion, or EOF if the operation fails. If the value of the argument *c* character equals EOF, the operation will fail and the stream will remain unchanged.

## SEE ALSO

[fseek(3)](/fseek/3.md), [getc(3)](/getc/3.md), [setvbuf(3)](/setvbuf/3.md), [ungetwc(3)](/ungetwc/3.md)

## STANDARDS

The **ungetc**() function conforms to ISO/IEC 9899:1990 (“ISO C90”).
