strcat_s, wcscat_s, _mbscat_s

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Anexa una cadena. Estas versiones de strcat, wcscat, _mbscat tienen mejoras de seguridad, como se describe en características de seguridad de CRT.

System_CAPS_ICON_important.jpg Importante

_mbscat_s no se puede usar en aplicaciones que se ejecutan en Windows en tiempo de ejecución. Para más información, vea Funciones de CRT no admitidas con /ZW.

errno_t strcat_s(  
   char *strDestination,  
   size_t numberOfElements,  
   const char *strSource   
);  
errno_t wcscat_s(  
   wchar_t *strDestination,  
   size_t numberOfElements,  
   const wchar_t *strSource   
);  
errno_t _mbscat_s(  
   unsigned char *strDestination,  
   size_t numberOfElements,  
   const unsigned char *strSource   
);  
template <size_t size>  
errno_t strcat_s(  
   char (&strDestination)[size],  
   const char *strSource   
); // C++ only  
template <size_t size>  
errno_t wcscat_s(  
   wchar_t (&strDestination)[size],  
   const wchar_t *strSource   
); // C++ only  
template <size_t size>  
errno_t _mbscat_s(  
   unsigned char (&strDestination)[size],  
   const unsigned char *strSource   
); // C++ only  

Parámetros

strDestination
Búfer de cadena de destino terminada en NULL.

numberOfElements
Tamaño del búfer de cadena de destino.

strSource
Búfer de cadena de origen terminada en NULL.

Devuelve cero si se ejecuta correctamente; devuelve un código de error si se produce un error.

Condiciones de error

strDestinationnumberOfElementsstrSourceValor devueltoContenido de strDestination
NULL o sin terminaranycualquieraEINVALno modificado
anycualquieraNULLEINVALstrDestination[0] se establece en 0
cualquiera0, o demasiado pequeñocualquieraERANGEstrDestination[0] se establece en 0

La función strcat_s anexa strSource a strDestination y termina la cadena resultante con un carácter nulo. El carácter inicial de strSource sobrescribe el carácter nulo de terminación de strDestination. El comportamiento de strcat_s no se define si las cadenas de origen y de destino se superponen.

Observe que el segundo parámetro es el tamaño total del búfer, no el tamaño restante:

char buf[16];  
strcpy_s(buf, 16, "Start");  
strcat_s(buf, 16, " End");               // Correct  
strcat_s(buf, 16 – strlen(buf), " End"); // Incorrect  

wcscat_s y _mbscat_s son versiones de caracteres anchos y multibyte de strcat_s. Los argumentos y el valor devuelto de wcscat_s son cadenas de caracteres anchos; los de _mbscat_s son cadenas de caracteres multibyte. Estas tres funciones se comportan exactamente igual.

Si strDestination es un puntero nulo o no está terminada en null, o si strSource es una NULL puntero, o si la cadena de destino es demasiado pequeña, se invoca el controlador de parámetros no válidos, como se describe en validación del parámetro. Si la ejecución puede continuar, estas funciones devuelven EINVAL y establecen errno en EINVAL.

En C++, el uso de estas funciones se simplifica con las sobrecargas de plantilla; las sobrecargas pueden realizar una inferencia automáticamente de la longitud de búfer (lo que elimina el requisito de especificar un argumento de tamaño) y pueden reemplazar automáticamente funciones anteriores no seguras con sus homólogos seguros más recientes. Para obtener más información, consulta Secure Template Overloads.

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

Asignaciones de rutina de texto genérico

Rutina TCHAR.H_UNICODE y _MBCS no definidos_MBCS definido_UNICODE definido
_tcscat_sstrcat_s_mbscat_swcscat_s
RutinaEncabezado necesario
strcat_s<string.h>
wcscat_s<string.h> o <wchar.h>
_mbscat_s<mbstring.h>

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

Vea el ejemplo de código de strcpy_s, wcscpy_s, _mbscpy_s.

System::String::Concat

Manipulación de cadenas
strncat, _strncat_l, wcsncat, _wcsncat_l, _mbsncat, _mbsncat_l
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l
strspn, wcsspn, _mbsspn, _mbsspn_l

Mostrar: