_mbccpy_s, _mbccpy_s_l
Copia un carácter multibyte de una cadena en otra. Estas versiones de _mbccpy, _mbccpy_l tienen mejoras de 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 con /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
Parámetros
[out] dest
Destino de la copia.[in] buffSizeInBytes
Tamaño del búfer de destino.[out] 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.[in] src
Carácter multibyte que se va a copiar.[in] 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 el 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 EINVAL y errno se establece en EINVAL.
Comentarios
La función _mbccpy_s copia un carácter multibyte de src en dest. Si src no señala al byte inicial de un carácter multibyte determinado por una llamada implícita a _ismbblead, se copia el byte único al que señala src. Si src señala a un byte inicial pero el byte siguiente es 0, y por tanto no válido, en dest se copia 0, errno se establece en EILSEQ y la función devuelve EILSEQ.
_mbccpy_s no anexa un terminador null; sin embargo, si src señala a un carácter nulo, ese carácter nulo se copia en dest (es simplemente una copia normal de un único 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 |
Observe que la segunda fila simplemente es un caso especial de la primera. Observe también que la tabla supone que buffSizeInBytes >= 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, vea Sobrecargas de plantilla seguras.
Asignaciones de rutina 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
Rutina |
Encabezado necesario |
---|---|
_mbccpy_s |
<mbstring.h> |
_mbccpy_s_l |
<mbstring.h> |
Para obtener más información sobre compatibilidad, vea Compatibilidad.