Cライブラリ関数 -wctomb()
説明
Cライブラリ関数int wctomb(char *str, wchar_t wchar)ワイド文字をwcharそのマルチバイト表現に変換し、それをstrstrが指す文字配列の先頭に格納します。
宣言
以下は wctomb() 関数の宣言です。
int wctomb(char *str, wchar_t wchar)
パラメータ
- str-- マルチバイト文字を格納するのに十分な配列を指すポインタ。
- wchar-- wchar_t 型のワイド文字。
戻り値
- str が NULL でない場合、wctomb() 関数はバイト配列に書き込まれたバイト数を返します。wchar がマルチバイトシーケンスとして表現できない場合は -1 を返します。
- str が NULL の場合、エンコーディングにシフト状態がある場合は wctomb() 関数は非ゼロを返し、エンコーディングがステートレスである場合はゼロを返します。
例
以下の例は、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("要转换的宽字符:\n");
i = wctomb( pmb, wc );
printf("被转换的字符:%u\n", i);
printf("多字节字符:%.1s\n", pmb);
printf("当要转换的字符为 NULL 时尝试转换:\n");
i = wctomb( pmbnull, wc );
printf("被转换的字符:%u\n", i);
/* 不会输出任何值 */
printf("多字节字符:%.1s\n", pmbnull);
return(0);
}
上記のプログラムをコンパイルして実行すると、次の結果が得られます。
要转换的宽字符: 被转换的字符:1 多字节字符:a 当要转换的字符为 NULL 时尝试转换: 被转换的字符:0 多字节字符:その他の拡張
C標準ライブラリ - <stdlib.h>