mblen ()- 确定多字节字符的长度

格式

#include <stdlib.h>
int mblen(const char *string, size_t n);

语言级别

ANSI

线程安全

False

请改为使用 mbrlen()

语言环境敏感

此函数的行为可能受当前语言环境的 LC_CTYPE 类别影响。 如果在编译命令上指定了 LOCALETYPE (*LOCALEUCS2) 或 LOCALETYPE (*LOCALEUTF) ,那么此函数可能受当前语言环境的 LC_UNI_CTYPE 类别影响。 有关更多信息,请参阅 了解 CCSID 和语言环境

描述

mblen() 函数确定 string所指向的多字节字符的长度 (以字节为单位)。 n 表示检查的最大字节数。

返回值

如果 stringNULL,那么 mblen() 函数将返回:
  • 如果活动语言环境允许混合字节字符串,那么非零。 该函数初始化状态变量。
  • 否则为零。
如果 string 不是 NULL,那么 mblen() 将返回:
  • 如果 string 指向空字符,那么为零。
  • 包含多字节字符的字节数。
  • -1 如果 string 指向的不是有效的多字节字符。
注: mblen()mbtowc()wctomb() 函数使用自己的静态分配的存储器,因此不可重新启动。 但是, mbrlen()mbrtowc()wcrtomb() 可重新启动。

示例

此示例使用 mblen()mbtowc() 将多字节字符转换为单个宽字符。
#include <stdio.h>
#include <stdlib.h>
 
int length, temp;
char string [6] = "w";
wchar_t arr[6];
 
int main(void)
 
{
   /* Initialize internal state variable */
   length = mblen(NULL, MB_CUR_MAX);       
 
   /* Set string to point to a multibyte character  */
   length = mblen(string, MB_CUR_MAX);
   temp = mbtowc(arr,string,length);
   arr[1] = L'\0';
   printf("wide character string: %ls\n", arr);
}

相关信息