Condividi tramite


wctomb, _wctomb_l

Converte un carattere wide nel carattere multibyte corrispondente. Sono disponibili versioni più sicure di queste funzioni; vedere wctomb_s, _wctomb_s_l.

Sintassi

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

Parametri

mbchar
Indirizzo di un carattere multibyte.

wchar
Carattere wide.

Valore restituito

Se wctomb converte il carattere wide in un carattere multibyte, restituisce il numero di byte (che non è mai maggiore di MB_CUR_MAX) nel caratteri wide. Se wchar è il carattere Null wide (L'\0'), wctomb restituisce 1. Se il puntatore mbchar di destinazione è NULL, wctomb restituisce 0. Se la conversione non è possibile nelle impostazioni locali correnti, wctomb restituisce -1 e errno è impostata su EILSEQ.

Osservazioni:

La funzione wctomb 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. wctomb usa le impostazioni locali correnti per qualsiasi comportamento dipendente dalle impostazioni locali. La funzione _wctomb_l è identica a wctomb, ma usa le impostazioni locali passate. Per altre informazioni, vedere Locale.

wctomb convalida i propri parametri. Se mbchar è NULL, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, errno viene impostato su EINVAL e la funzione restituisce -1.

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 <stdlib.h>

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

Esempio

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

Vedi anche

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