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

# wctob(3)

convert between wide and single-byte characters

Part of [btowc(3)](/btowc/3.md).

## NAME

**btowc**, **wctob** – convert between wide and single-byte characters

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

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

*wint\_t*\

**btowc**(*int c*);

*int*\

**wctob**(*wint\_t c*);

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

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

*wint\_t*\

**btowc\_l**(*int c*, *locale\_t loc*);

*int*\

**wctob\_l**(*wint\_t c*, *locale\_t loc*);

## DESCRIPTION

The **btowc**() function converts a single-byte character into a corresponding wide character. If the character is EOF or not valid in the initial shift state, **btowc**() returns WEOF.

The **wctob**() function converts a wide character into a corresponding single-byte character. If the wide character is WEOF or not able to be represented as a single byte in the initial shift state, **wctob**() returns EOF.

The \_l-suffixed versions take an explicit locale argument, while the non-suffixed versions use the current global or per-thread locale.

## SEE ALSO

[mbrtowc(3)](/mbrtowc/3.md), [multibyte(3)](/multibyte/3.md), [wcrtomb(3)](/wcrtomb/3.md)

## STANDARDS

The **btowc**() and **wctob**() functions conform to IEEE Std 1003.1-2001 (“POSIX.1”).

## HISTORY

The **btowc**() and **wctob**() functions first appeared in FreeBSD 5.0.
