Condividi tramite


wctomb_s, _wctomb_s_l

Converte un carattere wide nel corrispondente carattere multibyte. Una versione di wctomb, _wctomb_l con miglioramenti della sicurezza come descritto in Funzionalità di sicurezza in 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
);

Parametri

  • [out] pRetValue
    Il numero di byte, o un codice che indica il risultato.

  • [out] mbchar
    L'indirizzo di un carattere multibyte.

  • [in] sizeInBytes
    Dimensione del buffer mbchar.

  • [in] wchar
    Un carattere wide.

  • [in] locale
    Impostazioni locali da utilizzare.

Valore restituito

Zero se ha esito positivo, un codice di errore in caso di errore.

Condizioni di errore

mbchar

sizeInBytes

Valore restituito

pRetValue

NULL

>0

EINVAL

non modificato

any

>INT_MAX

EINVAL

non modificato

any

troppo piccolo

EINVAL

non modificato

Se si verifica una qualsiasi delle condizioni di errore sopra riportate, viene invocato il gestore di parametro non valido, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, wctomb ritorna EINVAL e imposta errno a EINVAL.

Note

La funzione wctomb_s converte il suo argomento wchar nel carattere multibyte corrispondente e memorizza i risultati in mbchar. È possibile chiamare la funzione da qualsiasi punto di 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) contenuti nel carattere wide nell'intero puntato da pRetValue. Se wchar è il carattere wide null (L'\0'), wctomb_s riempie pRetValue con 1. Se il puntatore di destinazione mbchar è NULL, wctomb_s inserisce 0 in pRetValue. Se la conversione non è possibile nelle impostazioni locali correnti, wctomb_s inserisce - 1 in pRetValue.

wctomb_s utilizza le impostazioni locali correnti per le informazioni dipendenti dalle impostazioni locali; _wctomb_s_l è identica, ad eccezione del fatto che utilizza il parametro delle impostazioni locali che viene passato. Per ulteriori informazioni, vedere Impostazioni locali.

Requisiti

Routine

Intestazione obbligatoria

wctomb_s

<stdlib.h>

_wctomb_s_l

<stdlib.h>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'Introduzione.

Esempio

Questo programma mostra il comportamento della funzione wctomb.

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

Equivalente .NET Framework

Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma.

Vedere anche

Riferimenti

Conversione dei dati

Impostazioni locali

_mbclen, mblen, _mblen_l

mbstowcs, _mbstowcs_l

mbtowc, _mbtowc_l

wcstombs, _wcstombs_l

WideCharToMultiByte