wctomb_s
, _wctomb_s_l
Converte un carattere wide nel carattere multibyte corrispondente. Versione di , _wctomb_l
con miglioramenti della wctomb
sicurezza, 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