wctomb() — ワイド文字をマルチバイト文字に変換する

形式

#include <stdlib.h>
int wctomb(char *string, wchar_t character);

言語レベル

ANSI

スレッド・セーフ

いいえ

代わりに wcrtomb() を使用してください。

ロケール依存

この関数の振る舞いは、現行ロケールの LC_CTYPE カテゴリーの影響を受ける可能性があります。 また、この振る舞いは、LOCALETYPE(*LOCALEUCS2) または LOCALETYPE(*LOCALEUTF) がコンパイル・コマンドに対して指定されている場合は、現行ロケールの LC_UNI_CTYPE カテゴリーの影響を受ける可能性もあります。 詳しくは、 CCSID とロケールについてを参照してください。

ワイド文字関数

詳しくは、 ワイド文字 を参照してください。

説明

wctomb() 関数は、 characterwchar_t 値を、 stringが指すマルチバイト配列に変換します。 character の値が 0 の場合には、関数は初期シフト状態のまま 残ります。 wctomb() 関数は、最大で MB_CUR_MAX 文字を stringに保管します。

ワイド文字の変換は、 wcstombs()で説明されているものと同じです。 Unicode 例については、この関数を参照してください。

戻り値

wctomb() 関数は、マルチバイト文字の長さ (バイト単位) を戻します。 character が有効なマルチバイト文字でない場合、値 -1 が戻されます。 stringNULL ポインターの場合、 wctomb() 関数は、シフト依存エンコードが使用されている場合はゼロ以外を戻し、それ以外の場合は 0 を戻します。

変換エラーが発生した場合、errnoECONVERT に設定される可能性があります。

この例では、ワイド文字 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"
*/

関連情報