wctomb_s、_wctomb_s_lwctomb_s, _wctomb_s_l

ワイド文字を対応するマルチバイト文字に変換します。Converts a wide character to the corresponding multibyte character. CRT のセキュリティ機能」の説明にあるとおり、セキュリティが強化されたバージョンの wctomb、_wctomb_l です。A version of wctomb, _wctomb_l with security enhancements as described in Security Features in the CRT.

構文Syntax

errno_t wctomb_s(
   int *pRetValue,
   char *mbchar,
   size_t sizeInBytes,
   wchar_t wchar
);
errno_t _wctomb_s_l(
   int *pRetValue,
   char *mbchar,
   size_t sizeInBytes,
   wchar_t wchar,
   _locale_t locale
);

パラメーターParameters

pRetValuepRetValue
バイト数、または結果を示すコード。The number of bytes, or a code indicating the result.

mbcharmbchar
マルチバイト文字のアドレス。The address of a multibyte character.

sizeInBytessizeInBytes
バッファーのサイズmbcharします。Size of the buffer mbchar.

wcharwchar
ワイド文字。A wide character.

localelocale
使用するロケール。The locale to use.

戻り値Return Value

正常終了した場合は 0 を返します。失敗した場合はエラー コードを返します。Zero if successful, an error code on failure.

エラー条件Error Conditions

mbcharmbchar sizeInBytessizeInBytes 戻り値Return value pRetValuepRetValue
NULLNULL >0>0 EINVALEINVAL 変更されないnot modified
任意any >INT_MAX>INT_MAX EINVALEINVAL 変更されないnot modified
任意any 小さすぎるtoo small EINVALEINVAL 変更されないnot modified

上記のいずれかのエラー条件が発生すると、「パラメーターの検証」に説明されているように、無効なパラメーター ハンドラーが呼び出されます。If any of the above error conditions occurs, the invalid parameter handler is invoked, as described in Parameter Validation. 続けるには、実行が許可された場合wctomb返しますEINVAL設定とerrnoEINVALします。If execution is allowed to continue, wctomb returns EINVAL and sets errno to EINVAL.

RemarksRemarks

Wctomb_s関数に変換しますそのwcharを対応するマルチバイト文字の引数で結果を格納およびmbcharします。The wctomb_s function converts its wchar argument to the corresponding multibyte character and stores the result at mbchar. 任意のプログラムの任意のポイントからこの関数を呼び出すことができます。You can call the function from any point in any program.

場合wctomb_sワイド文字に変換をマルチバイト文字の場合は、バイト数が置かれる (よりも大きくなることはありませんMB_CUR_MAX)によって示される整数に、ワイド文字pRetValueします。If wctomb_s converts the wide character to a multibyte character, it puts the number of bytes (which is never greater than MB_CUR_MAX) in the wide character into the integer pointed to by pRetValue. 場合wcharワイド文字の null 文字 (L '\0') は、 wctomb_s塗りつぶしますpRetValue 1。If wchar is the wide-character null character (L'\0'), wctomb_s fills pRetValue with 1. 場合、ターゲット ポインター mbcharNULLwctomb_sに 0 を入れpRetValueします。If the target pointer mbchar is NULL, wctomb_s puts 0 in pRetValue. 現在のロケールで変換が不可能な場合wctomb_sに-1 を入れpRetValueします。If the conversion is not possible in the current locale, wctomb_s puts -1 in pRetValue.

wctomb_sロケールに依存する情報の現在のロケールを使用 _wctomb_s_l代わりに渡されたロケールを使用すると同じです。wctomb_s uses the current locale for locale-dependent information; _wctomb_s_l is identical except that it uses the locale passed in instead. 詳細については、「 Locale」を参照してください。For more information, see Locale.

必要条件Requirements

ルーチンによって返される値Routine 必須ヘッダーRequired header
wctomb_swctomb_s <stdlib.h><stdlib.h>
_wctomb_s_l_wctomb_s_l <stdlib.h><stdlib.h>

互換性の詳細については、「 互換性」を参照してください。For additional compatibility information, see Compatibility.

Example

このプログラムの動作を示しています、 wctomb関数。This program illustrates the behavior of the wctomb function.

// crt_wctomb_s.cpp
#include <stdio.h>
#include <stdlib.h>

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

    printf_s( "Convert a wide character:\n" );
    wctomb_s( &i, pmb, MB_CUR_MAX, wc );
    printf_s( "   Characters converted: %u\n", i );
    printf_s( "   Multibyte character: %.1s\n\n", pmb );
}
Convert a wide character:
   Characters converted: 1
   Multibyte character: a

関連項目See also

データ変換Data Conversion
ロケールLocale
_mbclen、mblen、_mblen_l_mbclen, mblen, _mblen_l
mbstowcs、_mbstowcs_lmbstowcs, _mbstowcs_l
mbtowc、_mbtowc_lmbtowc, _mbtowc_l
wcstombs、_wcstombs_lwcstombs, _wcstombs_l
WideCharToMultiByteWideCharToMultiByte