Condividi tramite


wctomb_s, _wctomb_s_l

Converte un carattere wide nel carattere multibyte corrispondente. Versione di , _wctomb_lcon miglioramenti della wctombsicurezza, come descritto in Funzionalità di sicurezza in CRT.

Sintassi

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

Parametri

pRetValue
Numero di byte o un codice che indica il risultato.

mbchar
Indirizzo di un carattere multibyte.

sizeInBytes
Dimensioni del buffer mbchar.

wchar
Carattere wide da convertire.

locale
Impostazioni locali da usare.

Valore restituito

Zero in caso di esito positivo, un codice di errore in caso di esito negativo.

Condizioni di errore

mbchar sizeInBytes Valore restituito pRetValue
NULL >0 EINVAL non modificato
qualsiasi >INT_MAX EINVAL non modificato
qualsiasi troppo piccolo EINVAL non modificato

Se si verifica una delle condizioni di errore precedenti, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, wctomb restituisce EINVAL e imposta errno su EINVAL.

Il valore EILSEQ restituito indica che il valore passato tramite il parametro wchar non è un carattere wide valido.

Osservazioni:

La funzione wctomb_s converte l'argomento wchar nel carattere multibyte corrispondente e archivia il risultato in mbchar. È possibile chiamare la funzione da qualsiasi punto in un qualsiasi programma.

Se wctomb_s converte il carattere wide in un carattere multibyte, inserisce il numero di byte (che non è mai maggiore di MB_CUR_MAX) nel caratteri wide nel valore intero a cui punta pRetValue. Se wchar è il carattere Null wide (L'\0'), wctomb_s riempie pRetValue di 1. Se il puntatore mbchar di destinazione è NULL, wctomb_s inserisce 0 in pRetValue. Se la conversione non è possibile nelle impostazioni locali correnti, wctomb_s inserisce -1 in pRetValue.

wctomb_s usa le impostazioni locali correnti per qualsiasi informazione dipendente dalle impostazioni locali. La funzione _wctomb_s_l è identica, ma usa le impostazioni locali passate. Per altre informazioni, vedere Locale.

Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.

Requisiti

Ciclo Intestazione obbligatoria
wctomb_s <stdlib.h>
_wctomb_s_l <stdlib.h>

Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

Esempio

Questo programma illustra il comportamento della funzione 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

Vedi anche

Conversione dati
impostazioni locali
_mbclen, mblen, _mblen_l
mbstowcs, _mbstowcs_l
mbtowc, _mbtowc_l
wcstombs, _wcstombs_l
WideCharToMultiByte