int wctomb(char *str, wchar
优质
小牛编辑
135浏览
2023-12-01
描述 (Description)
C库函数int wctomb(char *str, wchar_t wchar)函数将宽字符wchar转换为其多字节表示形式,并将其存储在str指向的字符数组的开头。
声明 (Declaration)
以下是wctomb()函数的声明。
int wctomb(char *str, wchar_t wchar)
参数 (Parameters)
str - 这是指向一个足以容纳多字节字符的数组的指针,
wchar - 这是wchar_t类型的宽字符。
返回值 (Return Value)
如果str不为NULL,则wctomb()函数返回已写入str的字节数组的字节数。 如果wchar不能表示为多字节序列,则返回-1。
如果str为NULL,则wctomb()函数在编码具有non-trivial(非平凡)移位状态时返回非零,如果编码是无状态则返回零。
例子 (Example)
以下示例显示了wctomb()函数的用法。
#include <stdio.h>
#include <stdlib.h>
int main () {
int i;
wchar_t wc = L'a';
char *pmbnull = NULL;
char *pmb = (char *)malloc(sizeof( char ));
printf("Converting wide character:\n");
i = wctomb( pmb, wc );
printf("Characters converted: %u\n", i);
printf("Multibyte character: %.1s\n", pmb);
printf("Trying to convert when target is NULL:\n");
i = wctomb( pmbnull, wc );
printf("Characters converted: %u\n", i);
/* this will not print any value */
printf("Multibyte character: %.1s\n", pmbnull);
return(0);
}
让我们编译并运行上面的程序,它将产生以下结果 -
Converting wide character:
Characters converted: 1
Multibyte character: a
Trying to convert when target is NULL:
Characters converted: 0
Multibyte character: