_mbclen, mblen, _mblen_l, _mbclen_l

Obtient la longueur et détermine la validité d’un caractère multioctet.

Important

Cette API ne peut pas être utilisée dans les applications qui s’exécutent dans le Windows Runtime. Pour plus d’informations, consultez Fonctions CRT non prises en charge dans les applications de la plateforme Windows universelle.

Syntaxe

size_t _mbclen(
   const unsigned char *c
);
size_t _mbclen_l(
   unsigned char const* c,
   _locale_t locale
);
int mblen(
   const char *mbstr,
   size_t count
);
int _mblen_l(
   const char *mbstr,
   size_t count,
   _locale_t locale
);

Paramètres

c
Caractères multioctet.

mbstr
Adresse d’une séquence d’octets de caractères multioctets.

count
Nombre d'octets à vérifier.

locale
Paramètres régionaux à utiliser.

Valeur retournée

_mbclen et _mbclen_l retourne 1 ou 2, en fonction de la longueur du caractère cmultioctet . Les fonctions retournent toujours 1 pour UTF-8, qu’il s’agisse c de multioctets ou non. Il n’y a aucun retour d’erreur pour _mbclen.

Si mbstr ce n’est pas NULLle cas, mblen et _mblen_l retournez la longueur, en octets, du caractère multioctet. Les mblen fonctions et _mblen_l fonctionnent correctement sur UTF-8 et peuvent retourner une valeur comprise entre 1 et 3. Quand mbstr est NULL (ou il pointe vers le caractère null de caractère large) mblen et _mblen_l retourne 0. Objet qui mbstr pointe vers un caractère multioctet valide dans les premiers count caractères ou mblen_mblen_l renvoyer -1.

Notes

La fonction _mbclen retourne la longueur, en octets, du caractère multioctet c. S’il c ne pointe pas vers l’octet principal d’un caractère multioctet (tel que déterminé par un appel implicite à _ismbblead, le résultat est _mbclen imprévisible.

mblen retourne la longueur en octets de mbstr s’il s’agit d’un caractère multioctet valide. Elle détermine également la validité de caractères multioctets associée à la page de codes. mblen examine count octets (ou moins) contenus dans mbstr, mais pas plus de MB_CUR_MAX.

La valeur de sortie est affectée par le LC_CTYPE paramètre de catégorie des paramètres régionaux. Les versions de ces fonctions sans suffixe _l utilisent les paramètres régionaux actuels pour ce comportement dépendant des paramètres régionaux. Les _l versions suffixees se comportent de la même façon, mais elles utilisent le paramètre de paramètres régionaux transmis à la place. Pour plus d’informations, consultez setlocale et paramètres régionaux.

_mbclen, _mblen_let sont spécifiques à Microsoft, et _mbclen_l ne font pas partie de la bibliothèque C Standard. Nous vous déconseillons de les utiliser là où vous voulez du code portable. Pour la compatibilité C standard, utilisez mblen ou mbrlen utilisez plutôt.

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

Mappages de routine de texte générique

Routine Tchar.h _UNICODE et _MBCS non défini _MBCS Défini _UNICODE Défini
_tclen Mappe à la macro ou à la fonction inline _mbclen Mappe à la macro ou à la fonction inline

Spécifications

Routine En-tête requis
_mbclen <mbstring.h>
mblen <stdlib.h>
_mblen_l <stdlib.h>

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

Exemple

// crt_mblen.c
/* illustrates the behavior of the mblen function
*/

#include <stdlib.h>
#include <stdio.h>

int main( void )
{
    int      i;
    char    *pmbc = (char *)malloc( sizeof( char ) );
    wchar_t  wc   = L'a';

    printf( "Convert wide character to multibyte character:\n" );
    wctomb_s( &i, pmbc, sizeof(char), wc );
    printf( "   Characters converted: %u\n", i );
    printf( "   Multibyte character: %x\n\n", *pmbc );

    i = mblen( pmbc, MB_CUR_MAX );
    printf( "Length in bytes of multibyte character %x: %u\n", *pmbc, i );

    pmbc = NULL;
    i = mblen( pmbc, MB_CUR_MAX );
    printf( "Length in bytes of NULL multibyte character %x: %u\n", pmbc, i );
}
Convert wide character to multibyte character:
   Characters converted: 1
   Multibyte character: 61

Length in bytes of multibyte character 61: 1
Length in bytes of NULL multibyte character 0: 0

Voir aussi

Classification des caractères
Paramètres régionaux
Interprétation des séquences de caractères multioctets
_mbccpy, _mbccpy_l
mbrlen
strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l