Share via


wctomb_s, _wctomb_s_l

將寬字元轉換為對應的多位元組字元。 版本 wctomb_wctomb_l 具有 CRT 中安全性功能中所述 的安全性增強功能。

語法

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
);

參數

pRetValue
位元組數目,或表示結果的代碼。

mbchar
多位元組字元的位址。

sizeInBytes
mbchar 緩衝區的大小。

wchar
要轉換的寬字元。

locale
要使用的地區設定。

傳回值

如果成功,則為零,如果失敗,則為錯誤碼。

錯誤狀況

mbchar sizeInBytes 傳回值 pRetValue
NULL >0 EINVAL 未修改
任意 >INT_MAX EINVAL 未修改
任意 太小 EINVAL 未修改

如果發生上述任何錯誤狀況,則會叫用不正確參數處理常式,如參數驗證 中所述 。 若允許繼續執行,wctomb 會傳回 EINVAL,且 errno 設為 EINVAL

傳回值 EILSEQ 表示透過 參數 wchar 傳遞的值不是有效的寬字元。

備註

wctomb_s 函式會將其 wchar 引數轉換成對應的多位元組字元,並將結果儲存在 mbchar。 您可以在任何程式的任何點呼叫函式。

如果 wctomb_s 將寬字元轉換成多位元組字元,它會將寬字元的位元組數目 (絕不會大於 MB_CUR_MAX) 放入 pRetValue 指向的整數。 如果 wchar 是寬字元的 Null 字元 (L'\0'),wctomb_s 會用 1 填入 pRetValue。 如果目標指標 mbcharNULLwctomb_s 請將 0 pRetValue 放入 。 如果目前地區設定中無法轉換, wctomb_s 請將 -1 pRetValue 放入 。

wctomb_s 會針對與地區設定相關的資訊使用目前的地區設定,_wctomb_s_l 與其相同,只不過它會改用傳入的地區設定。 如需詳細資訊,請參閱 Locale

根據預設,此函式的全域狀態會限定于應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。

需求

常式 必要的標頭
wctomb_s <stdlib.h>
_wctomb_s_l <stdlib.h>

如需相容性詳細資訊,請參閱相容性

範例

此程式說明 wctomb_s 函式的行為。

// 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

另請參閱

資料轉換
地區設定
_mbclen, mblen, _mblen_l
mbstowcs, _mbstowcs_l
mbtowc, _mbtowc_l
wcstombs, _wcstombs_l
WideCharToMultiByte