determine the number of bytes comprising a multibyte character
#include <stdlib.h> int mblen( const char *s, size_t n );
The mblen() function determines the number of bytes comprising the multibyte character pointed to by s. At most n bytes of the array pointed to by s will be examined.
If s is a NULL pointer, the mblen() function returns zero if multibyte character encodings do not have state-dependent encoding, and non-zero otherwise. If s is not a NULL pointer, the mblen() function returns:
mbtowc(), mbstowcs(), wctomb(), wcstombs()
#include <stdio.h> #include <stdlib.h> void main() { int len; char *mbs = "string"; printf( "Character encodings do %shave " "state-dependent \nencoding.\n", ( mblen( NULL, 0 ) ) ? "" : "not " ); len = mblen( "string", 6 ); if( len != -1 ) { mbs[len] = '\0'; printf( "Multibyte char '%s'(%d)\n", mbs, len ); } }
produces the output:
Character encodings do not have state-dependent encoding. Multibyte char 's'(1)
ANSI
All (except DOS/PM)