_mbccpy_s, _mbccpy_s_l

Copier un caractère multioctet d’une chaîne vers une autre chaîne. Ces versions ont des améliorations de _mbccpy_mbccpy_lsécurité, comme décrit dans les fonctionnalités de sécurité du CRT.

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

errno_t _mbccpy_s(
   unsigned char *dest,
   size_t buffSizeInBytes,
   int * pCopied,
   const unsigned char *src
);
errno_t _mbccpy_s_l(
   unsigned char *dest,
   size_t buffSizeInBytes,
   int * pCopied,
   const unsigned char *src,
   _locale_t locale
);
template <size_t size>
errno_t _mbccpy_s(
   unsigned char (&dest)[size],
   int * pCopied,
   const unsigned char *src
); // C++ only
template <size_t size>
errno_t _mbccpy_s_l(
   unsigned char (&dest)[size],
   int * pCopied,
   const unsigned char *src,
   _locale_t locale
); // C++ only

Paramètres

dest
Destination de la copie.

buffSizeInBytes
Taille de la mémoire tampon de destination.

pCopied
Rempli avec le nombre d’octets copiés (1 ou 2 en cas de réussite). Transmettez NULL si le nombre n’a pas d’importance.

src
Caractère multioctet à copier.

locale
Paramètres régionaux à utiliser.

Valeur retournée

Zéro si l'opération a réussi ; code d'erreur en cas de échec. Si src ou dest est NULL, ou si plus d’octets buffSizeinBytes sont copiés vers dest, 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, les fonctions retournent EINVALet errno sont définies sur EINVAL.

Notes

La fonction _mbccpy_s copie un caractère multioctet depuis src vers dest. S’il src ne pointe pas vers l’octet de début d’un caractère multioctet tel qu’il est déterminé par un appel implicite à _ismbblead, l’octet unique pointant src vers lequel il pointe est copié. Si src pointe vers un octet de prospect, mais que l’octet suivant est 0 et n’est donc pas valide, 0 est copié sur dest, errno est défini sur EILSEQ, et la fonction retourne EILSEQ.

_mbccpy_s n’ajoute pas de terminateur Null ; toutefois, si src elle pointe vers un caractère Null, cette valeur null est copiée dest sur (en tant que copie d’un octet standard).

La valeur de pCopied est remplie avec le nombre d’octets copiés. Les valeurs possibles sont 1 et 2 si l’opération réussit. Si NULL est transmis, ce paramètre est ignoré.

src Copié vers dest pCopied Valeur retournée
Octet autre qu’un octet de tête Octet autre qu’un octet de tête 1 0
0 0 1 0
Octet de tête suivi d’une valeur différente de 0 Octet de tête suivi d’une valeur différente de 0 2 0
Octet de tête suivi de 0 0 1 EILSEQ

La deuxième ligne n’est qu’un cas spécial de la première ligne. La table suppose buffSizeInBytes>= pCopied.

_mbccpy_s utilise les paramètres régionaux actuels pour le comportement dépendant des paramètres régionaux. _mbccpy_s_l est identique à _mbccpy_s, à ceci près que _mbccpy_s_l utilise les paramètres régionaux passés pour tout comportement dépendant des paramètres régionaux.

En C++, l’utilisation de ces fonctions est simplifiée par les surcharges de modèle ; les surcharges peuvent déduire automatiquement la longueur de la mémoire tampon, ce qui évite d’avoir à spécifier un argument de taille. Pour plus d’informations, consultez Surcharges de modèles sécurisés.

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
_tccpy_s Mappe à la macro ou à la fonction inline. _mbccpy_s Mappe à la macro ou à la fonction inline.

Spécifications

Routine En-tête requis
_mbccpy_s <mbstring.h>
_mbccpy_s_l <mbstring.h>

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

Voir aussi

Paramètres régionaux
Interprétation des séquences de caractères multioctets
_mbclen, mblen, _mblen_l