wctomb_s函数
概要:
#define __STDC_WANT_LIB_EXT1__ 1 #include <stdlib.h> errno_t wctomb_s(int * restrict status, char * restrict s, rsize_t smax, wchar_t wc);
描述:
假设: n表示与宽字符wc对应的多字节字符的字节数,包括移位序列(shift sequences)。
该函数确定n的值,并将参数wc对应的多字节字符的表示形式存储到参数s指向的数组(如果参数s不是空指针。)。存储的字符数应不大于宏MB_CUR_MAX和smax。如果参数wc是空宽字符,将存入空字节,并且该空字节会被前置用以恢复初始移位状态(initial shift state)的移位序列,并且函数处于初始转换状态(initial conversion state)。
如果参数s是空指针,函数根据多字节字符编码是否依赖状态(state-dependent encodings),向参数status指向的对象存入非0值或者0。
在参数s不是空指针的情况下,如果参数wc存在对应的有效多字节字符,函数向参数status指向的对象存入n;如果参数wc不存在对应的有效多字节字符,函数向参数status指向的对象存入-1。
任何情况下,参数status指向对象的值都不能大于宏MB_CUR_MAX。
wctomb_s函数会受当前语言环境LC_CTYPE类别的影响。对于依赖状态的编码,如果参数s为空指针,调用函数会将其置于初始转换状态。随后在参数s不是空指针的情况下调用该函数,内部转换状态将根据需要进行改变。改变LC_CTYPE类别会导致函数的转换状态不确定。
实现应像没有库函数调用wctomb_s函数一样。
运行约束:
如果参数s不是空指针,参数smax应不小于n,并且参数smax应不大于宏RSIZE_MAX。如果参数s是空指针,参数smax应等于0。
如果存在运行约束冲突,函数wctomb_s不会修改参数status指向的整数;并且如果参数s不是空指针,函数访问参数s指向数组中最多smax个元素。
参数:
int类型指针,指向对象存储多字节字符序列的长度。
指向char类型数组的指针,转换的多字节字符将存放在该数组中。
参数s指向数组中最多可以访问的数组元素数。
wchar_t类型的宽字符。
返回值:
如果调用成功,函数返回0;如果存在运行约束冲突或者参数wc没有对应的有效多字节字符,函数返回非0值。
范例:
|
|
输出:
0X4C
0X6F
0X76
0X65
0
注:使用Visual Studio编译。
相关内容:
wctomb | 将宽字符转换为多字节字符序列的函数。 |