c16rtomb(3)

c16rtomb3

Convert a wide-character code to a character (restartable)

Part of wcrtomb(3).

Usage

#include <wchar.h>

size_t

wcrtomb(char * restrict s, wchar_t c, mbstate_t * restrict ps);

#include <uchar.h>

size_t

c16rtomb(char * restrict s, char16_t c, mbstate_t * restrict ps);

size_t

c32rtomb(char * restrict s, char32_t c, mbstate_t * restrict ps);

Library

Standard C Library (libc, -lc)

Overview

The wcrtomb(), c16rtomb() and c32rtomb() functions store a multibyte sequence representing the wide character c, including any necessary shift sequences, to the character array s, storing a maximum of MB_CUR_MAX bytes.

If s is NULL, these functions behave as if s pointed to an internal buffer and c was a null wide character (L'\0').

The mbstate_t argument, ps, is used to keep track of the shift state. If it is NULL, these functions use an internal, static mbstate_t object, which is initialized to the initial conversion state at program startup.

As certain multibyte characters may only be represented by a series of 16-bit characters, the c16rtomb() may need to invoked multiple times before a multibyte sequence is returned.

Return values

These functions return the length (in bytes) of the multibyte sequence needed to represent c, or (size_t)-1 if c is not a valid wide character code.

Errors

The wcrtomb(), c16rtomb() and c32rtomb() functions will fail if:

[EILSEQ]

An invalid wide character code was specified.

[EINVAL]

The conversion state is invalid.

Releases

30 releases since FreeBSD 10.0-RELEASE; the text changed 16 times.

  1. 10.0
  2. 10.1
  3. 10.2
  4. 10.3
  5. 10.4
  6. 11.0
  7. 11.1
  8. 11.2
  9. 11.3
  10. 11.4
  11. 12.0
  12. 12.1
  13. 12.2
  14. 12.3
  15. 12.4
  16. 13.0–13.2
  17. 13.3–16.0

Standards

The wcrtomb(), c16rtomb() and c32rtomb() functions conform to ISO/IEC 9899:2011 (“ISO C11”).

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's mdoc source.