---
name: "ungetwc"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/ungetwc"
---

# ungetwc(3)

un-get wide character from input stream

## NAME

**ungetwc** – un-get wide character from input stream

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

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

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

*wint\_t*\

**ungetwc**(*wint\_t wc*, *FILE \*stream*);

## DESCRIPTION

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

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

If a character is successfully pushed-back, the end-of-file indicator for the stream is cleared.

## RETURN VALUES

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

## SEE ALSO

[fseek(3)](/fseek/3.md), [getwc(3)](/getwc/3.md)

## STANDARDS

The **ungetwc**() function conforms to ISO/IEC 9899:1999 (“ISO C99”).
