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

# ungetwc(3)

un-get wide character from input stream

## NAME

**ungetwc**, **ungetwc\_l** – 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*);

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

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

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

*wint\_t*\

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

## 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 (in reverse order) by subsequent reads on the stream. A successful intervening call to one of the file positioning functions [fseek(3)](/fseek/3.md), [fsetpos(3)](/fsetpos/3.md), or [rewind(3)](/rewind/3.md), using the same stream, will discard the pushed-back wide characters.

Only one wide 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.

Although the **ungetwc**() function uses the current locale, the **ungetwc\_l**() function may be passed a locale directly. See [xlocale(3)](/xlocale/3.md) for more information.

## 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), [xlocale(3)](/xlocale/3.md)

## STANDARDS

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