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

# wctomb(3)

convert a wide-character code to a character

## NAME

**wctomb**, **wctomb\_l** – convert a wide-character code to a character

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

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

*int*\

**wctomb**(*char \*s*, *wchar\_t wchar*);

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

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

*int*\

**wctomb\_l**(*char \*s*, *wchar\_t wchar*, *locale\_t loc*);

## DESCRIPTION

The **wctomb**() function converts a wide character, *wchar*, into a multibyte character and stores the result in *s*. The object pointed to by *s* must be large enough to accommodate the multibyte character, which may be up to MB\_LEN\_MAX bytes.

A call with a null *s* pointer returns nonzero if the current locale requires shift states, zero otherwise; if shift states are required, the shift state is reset to the initial state.

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

## RETURN VALUES

If *s* is NULL, the **wctomb**() function returns nonzero if shift states are supported, zero otherwise. If *s* is valid, **wctomb**() returns the number of bytes processed in *s*, or -1 if no multibyte character could be recognized or converted. In this case, **wctomb**(*Ns*, *'s*) internal conversion state is undefined.

## ERRORS

The **wctomb**() function will fail if:

- \[EILSEQ\]

  An invalid multibyte sequence was detected.

- \[EINVAL\]

  The internal conversion state is invalid.

## SEE ALSO

[mbtowc(3)](/mbtowc/3.md), [wcrtomb(3)](/wcrtomb/3.md), [wcstombs(3)](/wcstombs/3.md), [wctob(3)](/wctob/3.md), [xlocale(3)](/xlocale/3.md)

## STANDARDS

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