Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Get the length and determine the validity of a multibyte character.
size_t_mbclen(constunsignedchar*c);
intmblen(constchar*mbstr,size_tcount**);**
Routine | Required Header | Compatibility |
_mbclen | <mbstring.h> | Win 95, Win NT |
mblen | <stdlib.h> | ANSI, Win 95, Win NT |
For additional compatibility information, see Compatibility in the Introduction.
Libraries
LIBC.LIB | Single thread static library, retail version |
LIBCMT.LIB | Multithread static library, retail version |
MSVCRT.LIB | Import library for MSVCRT.DLL, retail version |
Return Value
_mbclen returns 1 or 2, according to whether the multibyte character c is one or two bytes long. There is no error return for _mbclen. If mbstr is not NULL, mblen returns the length, in bytes, of the multibyte character. If mbstr is NULL, or if it points to the wide-character null character, mblen returns 0. If the object that mbstr points to does not form a valid multibyte character within the first count characters, mblen returns –1.
Parameters
c
Multibyte character
mbstr
Address of multibyte-character byte sequence
count
Number of bytes to check
Remarks
The _mbclen function returns the length, in bytes, of the multibyte character c. If c does not point to the lead byte of a multibyte character as determined by an implicit call to _ismbblead, the result of _mbclen is unpredictable.
mblen returns the length in bytes of mbstr if it is a valid multibyte character. It examines count or fewer bytes contained in mbstr, but not more than MB_CUR_MAX bytes. mblen determines multibyte-character validity according to the LC_CTYPE category setting of the current locale. For more information on the LC_CTYPE category, see setlocale.
Generic-Text Routine Mappings
TCHAR.H Routine | _UNICODE & _MBCS Not Defined | _MBCS Defined | _UNICODE Defined |
_tclen | Maps to macro or inline function | _mbclen | Maps to macro or inline function |
Example
/* MBLEN.C illustrates the behavior of the mblen function
*/
#include <stdlib.h>
#include <stdio.h>
void main( void )
{
int i;
char *pmbc = (char *)malloc( sizeof( char ) );
wchar_t wc = L'a';
printf( "Convert wide character to multibyte character:\n" );
i = wctomb( pmbc, wc );
printf( "\tCharacters converted: %u\n", i );
printf( "\tMultibyte character: %x\n\n", pmbc );
i = mblen( pmbc, MB_CUR_MAX );
printf( "Length in bytes of multibyte character %x: %u\n", pmbc, i );
pmbc = NULL;
i = mblen( pmbc, MB_CUR_MAX );
printf( "Length in bytes of NULL multibyte character %x: %u\n", pmbc, i );
}
Output
Convert wide character to multibyte character:
Characters converted: 1
Multibyte character: 2c02cc
Length in bytes of multibyte character 2c02cc: 1
Length in bytes of NULL multibyte character 0: 0
Character Classification Routines | Locale Routines | Interpretation of Multibyte-Character Sequences