mbrlen - determine number of bytes in next multibyte character
#include <wchar.h>
size_t mbrlen(const char *s, size_t n, mbstate_t *ps);
The mbrlen() function inspects at most n
bytes of the multibyte string starting at s
and extracts the next complete multibyte character. It updates the shift state *ps
. If the multibyte character is not the null wide character, it returns the number of bytes that were consumed from s
. If the multibyte character is the null wide character, it resets the shift state *ps
to the initial state and returns 0.
If the n
bytes starting at s
do not contain a complete multibyte character, mbrlen() returns (size_t) -2
. This can happen even if n
>= MB_CUR_MAX
, if the multibyte string contains redundant shift sequences.
If the multibyte string starting at s
contains an invalid multibyte sequence before the next complete character, mbrlen() returns (size_t) -1
and sets errno
to EILSEQ. In this case, the effects on *ps
are undefined.
If ps
is NULL, a static anonymous state known only to the mbrlen() function is used instead.
The mbrlen() function returns the number of bytes parsed from the multibyte sequence starting at s
, if a non-null wide character was recognized. It returns 0, if a null wide character was recognized. It returns (size_t) -1
and sets errno
to EILSEQ, if an invalid multibyte sequence was encountered. It returns (size_t) -2
if it couldn't parse a complete multibyte character, meaning that n
should be increased.
For an explanation of the terms used in this section, see attributes(7).
Interface | Attribute | Value |
mbrlen() | Thread safety | MT-Unsafe race:mbrlen/!ps |
POSIX.1-2001, POSIX.1-2008, C99.
The behavior of mbrlen() depends on the LC_CTYPE category of the current locale.
mbrtowc(3)
This page is part of release 5.10 of the Linux man-pages
project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at https://www.kernel.org/doc/man-pages/.