Partager via


wctomb_s, _wctomb_s_l

Convertit un caractère large en caractère multioctet correspondant. Une version de , _wctomb_lavec des améliorations dewctomb sécurité, comme décrit dans les fonctionnalités de sécurité dans le CRT.

Syntaxe

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

Paramètres

pRetValue
Nombre d’octets ou code indiquant le résultat.

mbchar
Adresse d’un caractère multioctet.

sizeInBytes
Taille de la mémoire tamponmbchar.

wchar
Caractère large à convertir.

locale
Paramètres régionaux à utiliser.

Valeur retournée

Zéro si l'opération a réussi, un code d'erreur en cas d'échec.

Conditions d'erreur

mbchar sizeInBytes Valeur retournée pRetValue
NULL >0 EINVAL non modifié
tous >INT_MAX EINVAL non modifié
tous trop petite EINVAL non modifié

Si l’une des conditions d’erreur ci-dessus se produit, le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres. Si l'exécution est autorisée à continuer, wctomb retourne EINVAL et définit errno à EINVAL.

La valeur EILSEQ de retour indique que la valeur passée via le paramètre wchar n’est pas un caractère large valide.

Notes

La fonction wctomb_s convertit son argument wchar en caractère multioctet correspondant et stocke le résultat au niveau de mbchar. Vous pouvez appeler la fonction de n’importe quel endroit dans n’importe quel programme.

Si wctomb_s convertit le caractère large en caractère multioctet, elle place le nombre d’octets (qui n’est jamais supérieure à MB_CUR_MAX) figurant dans le caractère large dans l’entier vers lequel pointe pRetValue. Si wchar correspond au caractère Null à caractère large (L'\0'), wctomb_s complète pRetValue avec la valeur 1. Si le pointeur mbchar cible est NULL, wctomb_s place 0 dans pRetValue. Si la conversion n’est pas possible dans les paramètres régionaux actuels, wctomb_s place -1 dans pRetValue.

wctomb_s utilise les paramètres régionaux actifs pour les informations dépendantes des paramètres régionaux ; la fonction _wctomb_s_l est identique à ceci près qu’elle utilise à la place les paramètres régionaux transmis. Pour plus d’informations, consultez Locale.

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Spécifications

Routine En-tête requis
wctomb_s <stdlib.h>
_wctomb_s_l <stdlib.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Exemple

Ce programme illustre le comportement de la fonction 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

Voir aussi

Conversion de données
Paramètres régionaux
_mbclen, mblen, _mblen_l
mbstowcs, _mbstowcs_l
mbtowc, _mbtowc_l
wcstombs, _wcstombs_l
WideCharToMultiByte