Compartir por


_mbccpy_s, _mbccpy_s_l

Copia un carácter multibyte de una cadena en otra. Estas versiones de , _mbccpy_ltienen mejoras de_mbccpy seguridad, como se describe en Características de seguridad de CRT.

Importante

Esta API no se puede usar en aplicaciones que se ejecutan en Windows en tiempo de ejecución. Para obtener más información, vea Funciones de CRT no admitidas en aplicaciones de la Plataforma universal de Windows.

Sintaxis

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

Parámetros

dest
Destino de la copia.

buffSizeInBytes
Tamaño del búfer de destino.

pCopied
Se rellena con el número de bytes copiados (1 o 2 si la operación se ejecuta correctamente). Pase NULL si el número da igual.

src
Carácter multibyte que se va a copiar.

locale
Configuración regional que se va a usar.

Valor devuelto

Devuelve cero si se ejecuta correctamente; devuelve un código de error si se produce un error. Si src o dest es NULL, o si se copiarían más de buffSizeinBytes bytes en dest, se invoca al controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, las funciones devuelven EINVALy errno se establecen en EINVAL.

Comentarios

La función _mbccpy_s copia un carácter multibyte de src en dest. Si src no apunta al byte principal de un carácter multibyte determinado por una llamada implícita a _ismbblead, se copia el byte único al que src apunta. Si src apunta a un byte de cliente potencial, pero el byte siguiente es 0 y, por tanto, no es válido, 0 se copia desten , errno se establece EILSEQen y la función devuelve EILSEQ.

_mbccpy_s no anexa un terminador nulo; sin embargo, si src apunta a un carácter NULL, ese valor NULL se copia en dest (como una copia normal de un solo byte).

El valor de pCopied se rellena con el número de bytes copiados. Los valores posibles son 1 y 2 si la operación es correcta. Si se pasa NULL, se omite este parámetro.

src se copia en dest pCopied Valor devuelto
byte no inicial byte no inicial 1 0
0 0 1 0
byte inicial seguido por un valor distinto de 0 byte inicial seguido por un valor distinto de 0 2 0
byte inicial seguido por 0 0 1 EILSEQ

La segunda fila es solo un caso especial de la primera fila. En la tabla se supone buffSizeInBytes>que = pCopied.

_mbccpy_s usa la configuración regional actual para cualquier comportamiento que dependa de la configuración regional. _mbccpy_s_l y _mbccpy_s son exactamente iguales, salvo que _mbccpy_s_l usa la configuración regional que se pasa para todo comportamiento dependiente de la configuración regional.

En C++, el uso de estas funciones se simplifica mediante sobrecargas de plantilla. Las sobrecargas pueden deducir la longitud del búfer automáticamente, lo que elimina la necesidad de especificar un argumento de tamaño. Para obtener más información, consulte Sobrecargas de plantilla seguras.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

Asignaciones de rutinas de texto genérico

Rutina Tchar.h _UNICODE y _MBCS no definidos _MBCS definido _UNICODE definido
_tccpy_s Se asigna a una macro o una función insertada. _mbccpy_s Se asigna a una macro o una función insertada.

Requisitos

Routine Encabezado necesario
_mbccpy_s <mbstring.h>
_mbccpy_s_l <mbstring.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Consulte también

Configuración regional
Interpretación de secuencias de caracteres de varios bytes
_mbclen, , mblen, _mblen_l