strcat_s, wcscat_s, _mbscat_s
Anexa una cadena.Éstas son versiones de strcat, wcscat, _mbscat con mejoras de seguridad como se describe en Características de seguridad en CRT.
Importante |
---|
_mbscat_s no se puede utilizar en las aplicaciones que se ejecutan en tiempo de ejecución de Windows.Para obtener más información, vea Funciones CRT no compatibles 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 terminada en null de destino.numberOfElements
Tamaño del búfer de cadena de destino.strSource
Búfer de cadena terminada en null de origen.
Valor devuelto
Cero si correctamente; un código de error del error.
Condiciones de error
strDestination |
numberOfElements |
strSource |
Valor devuelto |
Contenido de strDestination |
---|---|---|---|---|
NULL o e indefinida |
any |
any |
EINVAL |
no modificado |
any |
any |
NULL |
EINVAL |
strDestination[0] se establece en 0 |
any |
0, demasiado pequeño |
any |
ERANGE |
strDestination[0] se establece en 0 |
Comentarios
La función de 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 null de terminación de strDestination.El comportamiento de strcat_s es indefinido 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 de multibyte- carácter de strcat_s.Los argumentos y el valor devuelto de wcscat_s son cadenas de caracteres; las de _mbscat_s son cadenas de multibyte- carácter.Estas tres funciones se comportan exactamente igual de otra manera.
Si strDestination es un puntero NULL, o no termina en null, o si strSource es un puntero de NULL, o si la cadena de destino es demasiado pequeño, se invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros.Si la ejecución puede continuar, estas funciones EINVAL return y errno determinado a EINVAL.
En C++, mediante estas funciones es simplificado con sobrecargas de plantilla; las sobrecargas pueden deducir la longitud de búfer automáticamente (que elimina la necesidad de especificar un argumento de tamaño) y automáticamente pueden reemplazar anterior, funciones de no Secure con sus más recientes, seguros homólogos.Para obtener más información, vea Sobrecargas de plantilla de seguridad.
Las versiones de depuración de estas funciones primero rellenan el búfer con 0xFD.Para deshabilitar este comportamiento, use _CrtSetDebugFillThreshold.
Asignaciones de la rutina de Genérico- texto
Rutina de TCHAR.H |
_UNICODE y _MBCS no definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcscat_s |
strcat_s |
_mbscat_s |
wcscat_s |
Requisitos
Rutina |
Encabezado necesario |
---|---|
strcat_s |
<string.h> |
wcscat_s |
<string.h> o <wchar.h> |
_mbscat_s |
<mbstring.h> |
Para obtener información adicional de compatibilidad, vea Compatibilidad en la Introducción.
Ejemplo
Vea el ejemplo de código en strcpy_s, wcscpy_s, _mbscpy_s.
Equivalente en .NET Framework
Vea también
Referencia
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