次の方法で共有


wctomb, _wctomb_l

ワイド文字を対応するマルチバイト文字に変換します。 これらの関数のセキュリティを強化したバージョンを使用できます。「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 を返します。 ターゲット ポインター mbcharNULLの場合、 wctomb は 0 を返します。 現在のロケールで変換できない場合、 wctomb は -1 を返し、 errnoEILSEQ に設定されます。

解説

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

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

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。

要件

ルーチンによって返される値 必須ヘッダー
wctomb <stdlib.h>

互換性の詳細については、「 Compatibility」を参照してください。

このプログラムは、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

関連項目

データ変換
ロケール
_mbclenmblen_mblen_l
mbstowcs, _mbstowcs_l
mbtowc, _mbtowc_l
wcstombs, _wcstombs_l
WideCharToMultiByte