mbrtoc32(3)

mbrtoc323

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

Part of mbrtowc(3).

Usage

#include <wchar.h>

size_t

mbrtowc(wchar_t * restrict pc, const char * restrict s, size_t n, mbstate_t * restrict ps);

#include <uchar.h>

size_t

mbrtoc16(char16_t * restrict pc, const char * restrict s, size_t n, mbstate_t * restrict ps);

size_t

mbrtoc32(char32_t * restrict pc, const char * restrict s, size_t n, mbstate_t * restrict ps);

Library

Standard C Library (libc, -lc)

Overview

The mbrtowc(), mbrtoc16() and mbrtoc32() functions inspect at most n bytes pointed to by s to determine the number of bytes needed to complete the next multibyte character. If a character can be completed, and pc is not NULL, the wide character which is represented by s is stored in the wchar_t, char16_t or char32_t it points to.

If s is NULL, these functions behave as if pc was NULL, s was an empty string ("") and n was 1.

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 a single char16_t is not large enough to represent certain multibyte characters, the mbrtoc16() function may need to be invoked multiple times to convert a single multibyte character sequence.

Return values

The mbrtowc(), mbrtoc16() and mbrtoc32() functions return:

0

The next n or fewer bytes represent the null wide character (L'\0').

>0

The next n or fewer bytes represent a valid character, these functions return the number of bytes used to complete the multibyte character.

(size_t)-1

An encoding error has occurred. The next n or fewer bytes do not contribute to a valid multibyte character.

(size_t)-2

The next n contribute to, but do not complete, a valid multibyte character sequence, and all n bytes have been processed.

The mbrtoc16() function also returns:

(size_t)-3

The next character resulting from a previous call has been stored. No bytes from the input have been consumed.

Errors

The mbrtowc(), mbrtoc16() and mbrtoc32() functions will fail if:

[EILSEQ]

An invalid multibyte sequence was detected.

[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 mbrtowc(), mbrtoc16() and mbrtoc32() 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.