_mbsnbcat_s, _mbsnbcat_s_l

Anexa a una cadena de caracteres multibyte, como máximo, los primeros n bytes de otra cadena de caracteres multibyte. Estas funciones son versiones de _mbsnbcat, _mbsnbcat_l que 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 en aplicaciones de la Plataforma universal de Windows.

Sintaxis

errno_t _mbsnbcat_s(
   unsigned char *dest,
   size_t sizeInBytes,
   const unsigned char *src,
   size_t count
);
errno_t _mbsnbcat_s_l(
   unsigned char *dest,
   size_t sizeInBytes,
   const unsigned char *src,
   size_t count,
   _locale_t locale
);
template <size_t size>
errno_t _mbsnbcat_s(
   unsigned char (&dest)[size],
   const unsigned char *src,
   size_t count
); // C++ only
template <size_t size>
errno_t _mbsnbcat_s_l(
   unsigned char (&dest)[size],
   const unsigned char *src,
   size_t count,
   _locale_t locale
); // C++ only

Parámetros

dest
Cadena de destino de caracteres multibyte terminada en NULL.

sizeInBytes
Tamaño del búfer dest en bytes.

src
Cadena de origen de caracteres multibyte terminada en NULL.

count
Número de bytes de src que se van a anexar a dest.

locale
Configuración regional que se va a usar.

Valor devuelto

Cero si es correcto; en caso contrario, código de error.

Condiciones de error

dest sizeInBytes src Valor devuelto
NULL cualquiera cualquiera EINVAL
Any <= 0 cualquiera EINVAL
Any cualquiera NULL EINVAL

Si se produce alguna de las condiciones de error, la función genera un error de parámetro no válido, como se describe en Validación de parámetros. Si se controla el error, la función devuelve EINVAL y establece errno en EINVAL.

Comentarios

La función _mbsnbcat_s anexa a dest, como máximo, los primeros bytes count de src. Si el byte que precede inmediatamente al carácter nulo en dest es un byte inicial, lo sobrescribe el byte inicial de src. De lo contrario, el byte inicial de src sobrescribe el carácter nulo de terminación de dest. Si hay un byte nulo en src antes de que se anexen count bytes, _mbsnbcat_s anexa todos los bytes de src, hasta el carácter nulo. Si count es mayor que la longitud de src, se usa la longitud de src en lugar de count. La cadena resultante se termina con un carácter nulo. Si la copia tiene lugar entre cadenas que se superponen, el comportamiento es indefinido.

El valor de salida se ve afectado por el valor de la categoría LC_CTYPE de la configuración regional. Para obtener más información, vea setlocale. Las versiones de estas funciones son idénticas, salvo que las que no tienen el sufijo _l usan la configuración regional actual y las que tienen el sufijo _l usan el parámetro de configuración regional que se pasa. Para obtener más información, vea Locale.

En C++, las sobrecargas de plantilla simplifican el uso de estas funciones. Las sobrecargas pueden deducir automáticamente la longitud del búfer, lo que elimina la necesidad de especificar un argumento de tamaño y pueden usar automáticamente las funciones más recientes y seguras para reemplazar las funciones más antiguas y menos seguras. Para obtener más información, consulte Sobrecargas de plantillas seguras.

Las versiones de la biblioteca de depuración de estas funciones rellenan primero el búfer con 0xFE. Para deshabilitar este comportamiento, use _CrtSetDebugFillThreshold.

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
_tcsncat_s strncat_s _mbsnbcat_s wcsncat_s
_tcsncat_s_l _strncat_s_l _mbsnbcat_s_l _wcsncat_s_l

Requisitos

Routine Encabezado necesario
_mbsnbcat_s <mbstring.h>
_mbsnbcat_s_l <mbstring.h>

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

Consulte también

Manipulación de cadenas
_mbsnbcmp, _mbsnbcmp_l
_strncnt, _wcsncnt, _mbsnbcnt, _mbsnbcnt_l, _mbsnccnt, _mbsnccnt_l
_mbsnbcpy, _mbsnbcpy_l
_mbsnbcpy_s, _mbsnbcpy_s_l
_mbsnbset, _mbsnbset_l
strncat, _strncat_l, wcsncat, _wcsncat_l, _mbsncat, _mbsncat_l
strncat_s, _strncat_s_l, wcsncat_s, _wcsncat_s_l, _mbsncat_s, _mbsncat_s_l