wctomb_s, _wctomb_s_l

Konwertuje szeroki znak na odpowiadający znak wielobajtowy. Wersja programu z ulepszeniami zabezpieczeń wctomb_wctomb_lzgodnie z opisem w temacie Funkcje zabezpieczeń w narzędziu CRT.

Składnia

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
Liczba bajtów lub kod wskazujący wynik.

mbchar
Adres znaku wielobajtowego.

sizeInBytes
Rozmiar buforu mbchar.

wchar
Szeroki znak do konwersji.

locale
Ustawienia regionalne do użycia.

Wartość zwracana

Zero, jeśli działanie powiedzie się, kod błędu w przypadku niepowodzenia.

Warunki błędu

mbchar sizeInBytes Wartość zwracana pRetValue
NULL >0 EINVAL niezmodyfikowane
dowolny >INT_MAX EINVAL niezmodyfikowane
dowolny za mały EINVAL niezmodyfikowane

Jeśli wystąpi którykolwiek z powyższych warunków błędu, 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, wctomb zwraca EINVAL i ustawia wartość EINVALerrno .

Wartość EILSEQ zwracana wskazuje, że wartość przekazywana za pośrednictwem parametru wchar nie jest prawidłowym znakiem szerokim.

Uwagi

Funkcja wctomb_s konwertuje argument wchar na odpowiedni znak wielobajtowy i przechowuje wynik na mbchar. Funkcję można wywołać z dowolnego punktu w dowolnym programie.

Jeśli wctomb_s konwertuje znak szeroki na znak wielobajtowy, umieszcza liczbę bajtów (która nigdy nie jest większa niż MB_CUR_MAX) w szerokim znaku na liczbę całkowitą wskazywaną przez pRetValuewartość . Jeśli wchar jest znakiem null o szerokim znaku (L'\0'), wctomb_s wypełnia pRetValue znakiem 1. Jeśli wskaźnik mbchar docelowy to NULL, wctomb_s umieszcza wartość 0 w pRetValueelem. Jeśli konwersja nie jest możliwa w bieżących ustawieniach regionalnych, wctomb_s umieszcza wartość -1 w elemencie pRetValue.

wctomb_s używa bieżących ustawień regionalnych dla informacji zależnych od ustawień regionalnych; _wctomb_s_l jest identyczna, z tą różnicą, że używa ustawień regionalnych przekazanych w zamian. Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.

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

Wymagania

Procedura Wymagany nagłówek
wctomb_s <stdlib.h>
_wctomb_s_l <stdlib.h>

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

Przykład

Ten program ilustruje zachowanie wctomb_s funkcji.

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

Zobacz też

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