mbrlen - determine number of bytes in next multibyte character
#include <wchar.h>
size_t mbrlen(const char s[restrict .n], size_t n,
mbstate_t *restrict 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.
mbrtowc(3)