Sdílet prostřednictvím


wctomb_s, _wctomb_s_l

Převede široký znak na odpovídající vícebajtový znak. Verze wctomb, _wctomb_l s vylepšeními zabezpečení, jak je popsáno v funkcích zabezpečení v CRT.

Syntaxe

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

Parametry

pRetValue
Počet bajtů nebo kód označující výsledek.

mbchar
Adresa vícebajtového znaku.

sizeInBytes
Velikost vyrovnávací paměti mbchar.

wchar
Široký znak, který chcete převést.

locale
Národní prostředí, které se má použít

Vrácená hodnota

Nula v případě úspěchu, kód chyby při selhání.

Chybové podmínky

mbchar sizeInBytes Vrácená hodnota pRetValue
NULL >0 EINVAL neupraveno
jakékoliv >INT_MAX EINVAL neupraveno
jakékoliv příliš malý EINVAL neupraveno

Pokud dojde k některé z výše uvedených chybových podmínek, vyvolá se neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je povoleno pokračovat provádění, wctomb vrátí EINVAL a nastaví errno hodnotu EINVAL.

Vrácená hodnota EILSEQ označuje, že hodnota předaná parametrem wchar není platným širokým znakem.

Poznámky

Funkce wctomb_s převede svůj wchar argument na odpovídající vícebajtový znak a uloží výsledek na mbchar. Funkci můžete volat z libovolného bodu v libovolném programu.

Pokud wctomb_s převede široký znak na vícebajtový znak, umístí počet bajtů (který není nikdy větší než MB_CUR_MAX) do celého znaku na celé číslo, na které pRetValueodkazuje . Pokud wchar je znak null širokého znaku (L'\0'), wctomb_s vyplní pRetValue 1. Pokud je NULLcílový ukazatel mbchar , wctomb_s umístí hodnotu 0 do pRetValue. Pokud převod není v aktuálním národním prostředí možný, wctomb_s vloží -1 do pRetValue.

wctomb_s používá aktuální národní prostředí pro informace závislé na národním prostředí; _wctomb_s_l je shodný s tím rozdílem, že místo toho používá národní prostředí předané. Další informace naleznete v tématu Národní prostředí.

Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.

Požadavky

Rutina Požadovaný hlavičkový soubor
wctomb_s <stdlib.h>
_wctomb_s_l <stdlib.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

Tento program znázorňuje chování wctomb_s funkce.

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

Viz také

Konverze dat
Národní prostředí
_mbclen, , mblen_mblen_l
mbstowcs, _mbstowcs_l
mbtowc, _mbtowc_l
wcstombs, _wcstombs_l
WideCharToMultiByte