当前位置: C语言 -- 标准库 -- <wchar.h> -- mbsinit

mbsinit函数


概要:
#include <wchar.h>
int mbsinit(const mbstate_t *ps);

描述:

如果参数ps不是空指针,该函数验证参数ps指向对象是否表示初始转换状态。

0值的mbstate_t对象总是表示初始转换状态;其它值也可以表示初始转换状态,但取决于具体实现。


参数:
const mbstate_t *ps

指向mbstate_t类型对象的指针。


返回值:

如果参数ps指向的对象表示初始转换状态,或者参数ps是空指针,函数返回一个非0值;否则函数返回0


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
/*函数mbsinit范例*/

#include <locale.h>
#include <string.h>
#include <wchar.h>

/*声明测试转换状态的函数。*/
void testState(mbstate_t *ps);

int main(void)
{
    setlocale(LC_ALL, "");

    char str[] = "";
    static mbstate_t mbs;
    size_t number = strlen(str);
    
    wprintf(L"%s占有%zu个字节。\n", str, number);
    
    for(size_t i=0; i<number; ++i)
    {
        mbrlen(&str[i], 1, &mbs);
        wprintf(L"读取第%zu个字节后,", (i+1));
        testState(&mbs);
    }
    
    return 0;
}

/*定义测试转换状态的函数。*/
void testState(mbstate_t *ps)
{
    if(ps == NULL)
        wprintf(L"空指针。\n");
    else
    {
        if(mbsinit(ps))
            wprintf(L"转换状态是初始转换状态。\n");
        else
            wprintf(L"转换状态不是初始转换状态。\n");
    }
}


输出:

国占有3个字节。

读取第1个字节后,转换状态不是初始转换状态。

读取第2个字节后,转换状态不是初始转换状态。

读取第3个字节后,转换状态是初始转换状态。

注:使用ideone.com编译。


相关内容:
mbstate_t 存储多字节字符序列和宽字符序列相互转换所需转换状态信息的类型。