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 表示检查的最大字节数。
返回值
如果 string 为 NULL,那么
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);
}