Partager via


_mbccpy_s, _mbccpy_s_l

Copie un caractère multi-octets d'une chaîne à une autre chaîne. Ces versions _mbccpy, _mbccpy_l présentent des améliorations de sécurité, comme décrit dans Fonctionnalités de sécurité dans le 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 avec /ZW.

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

  • [out] dest
    Destination de copie.

  • [in] buffSizeInBytes
    Taille de la mémoire tampon de destination.

  • [out] pCopied
    Rempli avec le nombre d'octets copiés (1 ou 2 si réussi). Passez NULL si vous ne vous inquiétez pas du nombre.

  • [in] src
    Caractère multi-octets à copier.

  • [in] locale
    Paramètres régionaux à utiliser.

Valeur de retour

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 que buffSizeinBytes octets sont copiés vers dest, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, cette fonction retourne EINVAL et errno est défini à EINVAL.

Notes

La fonction _mbccpy_s copie un caractère multi-octets depuis src vers dest. Si src ne pointe pas vers l'octet de tête d'un caractère multi-octets déterminé par un appel implicite à _ismbblead, l'octet unique sur lequel pointe src est copié. Si src pointe vers un octet de tête mais que l'octet suivant est 0 donc invalide, alors 0 est copié vers dest, errno a la valeur EILSEQ, et la fonction retourne EILSEQ.

_mbccpy_s n'ajoute pas de terminateur null ; Toutefois, si src pointe vers un caractère Null, ce null est copié vers dest (c'est simplement une copie normale d'un seul octet).

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 passé, ce paramètre est ignoré.

src

copié à dest

pCopied

Valeur de retour

pas un octet de tête

pas un octet de tête

1

0

0

0

1

0

octet de tête suivi de non-0

octet de tête suivi de non-0

2

0

octet de tête suivi de 0

0

1

EILSEQ

Notez que la deuxième ligne est simplement un cas particulier de la première Notez également que la table suppose buffSizeInBytes >= pCopied.

_mbccpy_s utilise les paramètres régionaux courants pour tout comportement dépendant des paramètres régionaux. _mbccpy_s_l est identique à _mbccpy_s sauf que _mbccpy_s_l utilise les paramètres régionaux qui lui sont passés pour tout comportement dépendant des paramètres régionaux.

En C++, l'utilisation de ces fonctions est simplifiée par des surcharges de modèle ; les surcharges peuvent également déduire la longueur de la mémoire tampon automatiquement, en éliminant le besoin de spécifier un argument de taille. Pour plus d'informations, consultez Sécuriser les surcharges de modèle.

Mappages de routines de texte générique

Routine Tchar.h

_UNICODE et _MBCS non définis

_MBCS défini

_UNICODE défini

_tccpy_s

Mappe à la macro ou à la fonction inline

_mbccpy_s

Mappe à la macro ou à la fonction inline

Configuration requise

Routine

En-tête requis

_mbccpy_s

<mbstring.h>

_mbccpy_s_l

<mbstring.h>

Pour plus d'informations sur la compatibilité, consultez Compatibilité.

Voir aussi

Référence

Paramètres régionaux

Interprétation des séquences de caractères multioctets

_mbclen, mblen, _mblen_l