w3resource

C mblen() function

C mblen() function - Get number of bytes in a character

Syntax mblen() function

int mblen(const char *str, size_t n)

The mblen() function is used to get the length in bytes of the multibyte character pointed to by string. n represents the maximum number of bytes examined.

Parameters mblen() function

Name Description Required /Optional
str Address of a multibyte-character byte sequence. Required
n This is the maximum number of bytes to be checked for character length. Required

Return value from mblen()

If string is NULL, the mblen() function returns:

  • A non-zero value indicates that the active locale supports mixed-byte strings.The function initializes the state variable.
  • Zero otherwise.

If string is not NULL, mblen() returns:

  • A non-zero value indicates that the active locale supports mixed-byte strings. The function initializes the state variable.
  • Zero otherwise.

Example: mblen() function

The following example shows the usage of mblen() function.

#include <stdlib.h>
#include <stdio.h>

int main( void )
{
    int      i;
    char    *mbstr = (char *)malloc( sizeof( char ) );

    i = mblen( mbstr, MB_CUR_MAX );
    printf( "Length in bytes of multibyte character %x: %u\n", *mbstr, i );

    mbstr = NULL;
    i = mblen( mbstr, MB_CUR_MAX );
    printf( "Length in bytes of NULL multibyte character %x: %u\n", mbstr, i );
}

Output:

Length in bytes of multibyte character ffffff80: 1
Length in bytes of NULL multibyte character 0: 0

C Programming Code Editor:

Previous C Programming: C ldiv()
Next C Programming: C mbstowcs()



Follow us on Facebook and Twitter for latest update.

C Programming: Tips of the Day

What does i = (i, ++i, 1) + 1; do?

In the expression (i, ++i, 1), the comma used is the comma operator

the comma operator (represented by the token ,) is a binary operator that evaluates its first operand and discards the result, and then evaluates the second operand and returns this value (and type).

Because it discards its first operand, it is generally only useful where the first operand has desirable side effects. If the side effect to the first operand does not takes place, then the compiler may generate warning about the expression with no effect.

So, in the above expression, the leftmost i will be evaluated and its value will be discarded. Then ++i will be evaluated and will increment i by 1 and again the value of the expression ++i will be discarded, but the side effect to i is permanent. Then 1 will be evaluated and the value of the expression will be 1.

It is equivalent to:

i;          // Evaluate i and discard its value. This has no effect.
++i;        // Evaluate i and increment it by 1 and discard the value of expression ++i
i = 1 + 1;  

Note that the above expression is perfectly valid and does not invoke undefined behavior because there is a sequence point between the evaluation of the left and right operands of the comma operator.

Ref : https://bit.ly/3saxONC





We are closing our Disqus commenting system for some maintenanace issues. You may write to us at reach[at]yahoo[dot]com or visit us at Facebook