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 を返します。 変換先のポインター 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 );
}
同等の .NET Framework 関数
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。