mblen()
Count the bytes in a multibyte character
Synopsis:
#include <stdlib.h> int mblen( const char * s, size_t n );
Arguments:
- s
- NULL (see below), or a pointer to a multibyte character.
- n
- The maximum number of bytes that you want to count.
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
The mblen() function counts the number of bytes in the multibyte character pointed to by s, to a maximum of n bytes.
The mbrlen() function is a restartable version of mblen().
Returns:
- If s is NULL, mblen() determines whether or not the character encoding is state-dependent:
- 0
- The mblen() function uses locale-specific multibyte character encoding that's not state-dependent.
- ≠ 0
- Character is state-dependent.
- If s isn't NULL:
- 0
- s points to the null character.
- -1
- The next n bytes don't form a valid multibyte character.
- > 0
- The number of bytes that comprise the multibyte character (if the next n or fewer bytes form a valid multibyte character).
Examples:
#include <stdio.h> #include <stdlib.h> int main( void ) { int len; char *mbs = "string"; printf( "Character encodings do " ); if( !mblen( NULL, 0 ) ) { printf( "not " ); } printf( "have state-dependent \nencoding.\n" ); len = mblen( "string", 6 ); if( len != -1 ) { mbs[len] = '\0'; printf( "Multibyte char '%s'(%d)\n", mbs, len ); } return EXIT_SUCCESS; }
This produces the output:
Character encodings do not have state-dependent encoding. Multibyte char 's'(1)
Classification:
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |