manpages.info - online man pages   

Mac OS X / Darwin man pages : mbrlen (3)
mbrlen (3)

Table of Contents

Name

mbrlen - get number of bytes in a character (restartable)

Library

Standard C Library (libc, -lc)

Synopsis

#include <wchar.h>

size_t
mbrlen(const char * restrict s, size_t n, mbstate_t * restrict ps);

Description

The mbrlen() function determines the number of bytes constituting the multibyte character sequence pointed to by s, examining at most n bytes.

The mbstate_t argument, ps, is used to keep track of the shift state. If it is NULL, mbrlen() uses an internal, static mbstate_t object.

It is equivalent to:

mbrtowc(NULL, s, n, ps);

Except that when ps is a NULL pointer, mbrlen() uses its own static, internal mbstate_t object to keep track of the shift state.

Return Values

The mbrlen() functions returns:

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

>0
The first n or fewer bytes of s represent a valid character, mbrtowc() returns the length (in bytes) of the multibyte sequence.

(size_t)-2
The first n bytes of s are an incomplete multibyte sequence.

(size_t)-1
The byte sequence pointed to by s is an invalid multibyte sequence.

Examples

A function which calculates the number of characters in a multibyte character string:

size_t
nchars(const char *s)
{
size_t charlen, chars;
mbstate_t mbs;

chars = 0;
memset(&mbs, 0, sizeof(mbs)); while ((charlen = mbrlen(s, MB_CUR_MAX, &mbs)) != 0 && charlen != (size_t)-1 && charlen != (size_t)-2) { s += charlen;
chars++;
}

return (chars);
}

Errors

The mbrlen() function will fail if:

[EILSEQ]
An invalid multibyte sequence was detected.

See Also

mblen(3) , mbrtowc(3)

Standards

The mbrlen() function conforms to ISO/IEC 9899:1999 (``ISO C99'').

Bugs

The current implementation does not support shift states.


Table of Contents