mblen - get number of bytes in a character
#include <stdlib.h> int mblen(const char *s, size_t n);
If s is not a null pointer, mblen() determines the number of bytes constituting the character pointed to by s. Except that the shift state of mbtowc() is not affected, it is equivalent to:
mbtowc((wchar_t *)0, s, n);
The implementation will behave as if no function defined in this document calls mblen().
The behaviour of this function is affected by the LC_CTYPE category of the current locale. For a state-dependent encoding, this function is placed into its initial state by a call for which its character pointer argument, s, is a null pointer. Subsequent calls with s as other than a null pointer cause the internal state of the function to be altered as necessary. A call with s as a null pointer causes this function to return a non-zero value if encodings have state dependency, and 0 otherwise. If the implementation employs special bytes to change the shift state, these bytes do not produce separate wide-character codes, but are grouped with an adjacent character. Changing the LC_CTYPE category causes the shift state of this function to be indeterminate.
If s is a null pointer, mblen() returns a non-zero or 0 value, if character encodings, respectively, do or do not have state-dependent encodings. If s is not a null pointer, mblen() either returns 0 (if s points to the null byte), or returns the number of bytes that constitute the character (if the next n or fewer bytes form a valid character), or returns -1 (if they do not form a valid character) and may set errno to indicate the error. In no case will the value returned be greater than n or the value of the MB_CUR_MAX macro.
The mblen() function may fail if:
- Invalid character sequence is detected.
mbtowc(), mbstowcs(), wctomb(), wcstombs(), <stdlib.h>.