Udostępnij za pośrednictwem


wctomb, _wctomb_l

Przekonwertuj znak szeroki na odpowiedni znak wielobajtowy. Dostępne są bezpieczniejsze wersje tych funkcji; zobacz wctomb_s, _wctomb_s_l.

Składnia

int wctomb(
   char *mbchar,
   wchar_t wchar
);
int _wctomb_l(
   char *mbchar,
   wchar_t wchar,
   _locale_t locale
);

Parametry

mbchar
Adres znaku wielobajtowego.

wchar
Szeroki znak.

Wartość zwracana

Jeśli wctomb konwertuje znak szeroki na znak wielobajtowy, zwraca liczbę bajtów (która nigdy nie jest większa niż MB_CUR_MAX) w szerokim znaku. Jeśli wchar jest znakiem null o szerokim znaku (L'\0'), wctomb zwraca wartość 1. Jeśli wskaźnik mbchar docelowy to NULL, wctomb zwraca wartość 0. Jeśli konwersja nie jest możliwa w bieżących ustawieniach regionalnych, wctomb zwraca wartość -1 i errno jest ustawiona na EILSEQwartość .

Uwagi

Funkcja wctomb konwertuje argument wchar na odpowiedni znak wielobajtowy i przechowuje wynik na mbchar. Funkcję można wywołać z dowolnego punktu w dowolnym programie. wctomb używa bieżących ustawień regionalnych dla dowolnego zachowania zależnego od ustawień regionalnych; _wctomb_l jest identyczna z wctomb tą różnicą, że używa ustawień regionalnych przekazanych w zamian. Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.

wctomb weryfikuje jego parametry. Jeśli mbchar parametr ma NULLwartość , wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, jest ustawione na EINVAL , errno a funkcja zwraca wartość -1.

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.

Wymagania

Procedura Wymagany nagłówek
wctomb <stdlib.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Przykład

Ten program ilustruje zachowanie funkcji 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

Zobacz też

Konwersja danych
ustawienia regionalne
_mbclen, , mblen_mblen_l
mbstowcs, _mbstowcs_l
mbtowc, _mbtowc_l
wcstombs, _wcstombs_l
WideCharToMultiByte