wctomb() — ワイド文字をマルチバイト文字に変換する
形式
#include <stdlib.h>
int wctomb(char *string, wchar_t character);言語レベル
ANSI
スレッド・セーフ
いいえ
代わりに wcrtomb() を使用してください。
ロケール依存
この関数の振る舞いは、現行ロケールの LC_CTYPE カテゴリーの影響を受ける可能性があります。 また、この振る舞いは、LOCALETYPE(*LOCALEUCS2) または LOCALETYPE(*LOCALEUTF) がコンパイル・コマンドに対して指定されている場合は、現行ロケールの LC_UNI_CTYPE カテゴリーの影響を受ける可能性もあります。 詳しくは、 CCSID とロケールについてを参照してください。
ワイド文字関数
詳しくは、 ワイド文字 を参照してください。
説明
wctomb() 関数は、 character の wchar_t 値を、 stringが指すマルチバイト配列に変換します。 character の値が 0 の場合には、関数は初期シフト状態のまま
残ります。 wctomb() 関数は、最大で MB_CUR_MAX 文字を stringに保管します。
ワイド文字の変換は、 wcstombs()で説明されているものと同じです。 Unicode 例については、この関数を参照してください。
戻り値
wctomb() 関数は、マルチバイト文字の長さ (バイト単位) を戻します。 character が有効なマルチバイト文字でない場合、値 -1 が戻されます。 string が NULL ポインターの場合、 wctomb() 関数は、シフト依存エンコードが使用されている場合はゼロ以外を戻し、それ以外の場合は 0 を戻します。
変換エラーが発生した場合、errno は ECONVERT に設定される可能性があります。
例
この例では、ワイド文字 c をマルチバイト文字に変換します。
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#define SIZE 40
int main(void)
{
static char buffer[ SIZE ];
wchar_t wch = L'c';
int length;
length = wctomb( buffer, wch );
printf( "The number of bytes that comprise the multibyte "
"character is %i\n", length );
printf( "And the converted string is \"%s\"\n", buffer );
}
/**************** Output should be similar to: ******************
The number of bytes that comprise the multibyte character is 1
And the converted string is "c"
*/