---
name: "btowc"
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/btowc"
---

# btowc(3)

convert single byte to wide character

## NAME

btowc - convert single byte to wide character

## LIBRARY

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

## SYNOPSIS

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

**wint\_t btowc(int** *c***);**

## DESCRIPTION

The **btowc**() function converts *c*, interpreted as a multibyte sequence of length 1, starting in the initial shift state, to a wide character and returns it. If *c* is **EOF** or not a valid multibyte sequence of length 1, the **btowc**() function returns **WEOF**.

## RETURN VALUE

The **btowc**() function returns the wide character converted from the single byte *c*. If *c* is **EOF** or not a valid multibyte sequence of length 1, it returns **WEOF**.

## ATTRIBUTES

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

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

## STANDARDS

C11, POSIX.1-2008.

## HISTORY

C99, POSIX.1-2001.

## NOTES

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

This function should never be used. It does not work for encodings which have state, and unnecessarily treats single bytes differently from multibyte sequences. Use either [**mbtowc**(3)](/mbtowc/3.md) or the thread-safe [**mbrtowc**(3)](/mbrtowc/3.md) instead.

## SEE ALSO

[**mbrtowc**(3)](/mbrtowc/3.md), [**mbtowc**(3)](/mbtowc/3.md), [**wctob**(3)](/wctob/3.md)
