---
name: "ungetwc"
section: "3"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/ungetwc"
---

# ungetwc(3)

push back a wide character onto a FILE stream

## NAME

ungetwc - push back a wide character onto a FILE stream

## LIBRARY

Standard C library (*libc*, *-lc*)

## SYNOPSIS

```
#include <wchar.h>
```

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

## DESCRIPTION

The **ungetwc**() function is the wide-character equivalent of the [**ungetc**(3)](/ungetc/3.md) function. It pushes back a wide character onto *stream* and returns it.

If *wc* is **WEOF**, it returns **WEOF**. If *wc* is an invalid wide character, it sets *errno* to **EILSEQ** and returns **WEOF**.

If *wc* is a valid wide character, it is pushed back onto the stream and thus becomes available for future wide-character read operations. The file-position indicator is decremented by one or more. The end-of-file indicator is cleared. The backing storage of the file is not affected.

Note: *wc* need not be the last wide-character read from the stream; it can be any other valid wide character.

If the implementation supports multiple push-back operations in a row, the pushed-back wide characters will be read in reverse order; however, only one level of push-back is guaranteed.

## RETURN VALUE

The **ungetwc**() function returns *wc* when successful, or **WEOF** upon failure.

## ATTRIBUTES

For an explanation of the terms used in this section, see [**attributes**(7)](/attributes/7.md).

| | | |
| --- | --- | --- |
| **Interface** | **Attribute** | **Value** |
| **ungetwc**() | Thread safety | MT-Safe |

## STANDARDS

C11, POSIX.1-2008.

## HISTORY

POSIX.1-2001, C99.

## NOTES

The behavior of **ungetwc**() depends on the **LC\_CTYPE** category of the current locale.

## SEE ALSO

[**fgetwc**(3)](/fgetwc/3.md)
