Share via


wctomb、_wctomb_l

更新 : 2007 年 11 月

ワイド文字を対応するマルチバイト文字に変換します。これらの関数のセキュリティを強化したバージョンについては、「wctomb_s、_wctomb_s_l」を参照してください。

int wctomb(
   char *mbchar,
   wchar_t wchar 
);
int _wctomb_l(
   char *mbchar,
   wchar_t wchar,
   _locale_t locale
);

パラメータ

  • mbchar
    マルチバイト文字のアドレス。

  • wchar
    ワイド文字。

戻り値

wctomb 関数でワイド文字をマルチバイト文字に変換する場合は、そのワイド文字のバイト数 (必ず MB_CUR_MAX 以下) を返します。wchar がワイド文字の null 文字 (L'\0') の場合、wctomb 関数は 1 を返します。変換先のポインタ mbchar が NULL の場合、wctomb 関数は 0 を返します。現在のロケールでは変換ができない場合、wctomb 関数は –1 を返し、errno を EILSEQ に設定します。

解説

wctomb 関数は、引数 wchar を対応するマルチバイト文字に変換し、結果を mbchar に格納します。この関数はプログラムのどこからでも呼び出すことがででます。wctomb 関数は、すべてのロケールに依存する動作に現在のロケールを使用します。_wctomb_l 関数は、渡されたロケールを代わりに使用することを除いて wctomb 関数と同じです。詳細については、「ロケール」を参照してください。

wctomb は、パラメータを検証します。mbchar が NULL の場合は、「パラメータの検証」に説明されているように、無効なパラメータ ハンドラが呼び出されます。実行の継続が許可された場合、この関数は errno を EINVAL に設定して -1 を返します。

必要条件

ルーチン

必須ヘッダー

wctomb

<stdlib.h>

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。

使用例

次のプログラムは、wctomb 関数の動作を示しています。

// crt_wctomb.cpp
// compile with: /W3
#include <stdio.h>
#include <stdlib.h>

int main( void )
{
   int i;
   wchar_t wc = L'a';
   char *pmb = (char *)malloc( MB_CUR_MAX );

   printf( "Convert a wide character:\n" );
   i = wctomb( pmb, wc ); // C4996
   // Note: wctomb is deprecated; consider using wctomb_s
   printf( "   Characters converted: %u\n", i );
   printf( "   Multibyte character: %.1s\n\n", pmb );
}

Convert a wide character:
   Characters converted: 1
   Multibyte character: a

.NET Framework の相当するアイテム

適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。

参照

参照

データ変換

ロケール

_mbclen、mblen、_mblen_l

mbstowcs、_mbstowcs_l

mbtowc、_mbtowc_l

wcstombs、_wcstombs_l

WideCharToMultiByte