strcat_s
, wcscat_s
, _mbscat_s
, _mbscat_s_l
Acrescenta uma cadeia de caracteres. Essas versões do , , _mbscat
têm aprimoramentos destrcat
segurança, conforme descrito em Recursos de segurança no CRT. wcscat
Importante
_mbscat_s
e _mbscat_s_l
não podem ser usados em aplicativos executados no Windows Runtime. Para obter mais informações, confira Funções do CRT sem suporte em aplicativos da Plataforma Universal do Windows.
Sintaxe
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
);
errno_t _mbscat_s_l(
unsigned char *strDestination,
size_t numberOfElements,
const unsigned char *strSource,
_locale_t locale
);
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
template <size_t size>
errno_t _mbscat_s_l(
unsigned char (&strDestination)[size],
const unsigned char *strSource,
_locale_t locale
); // C++ only
Parâmetros
strDestination
Buffer de cadeia de caracteres de destino terminada em nulo.
numberOfElements
Tamanho do buffer de cadeia de caracteres de destino.
strSource
Buffer de cadeia de caracteres de origem com terminação nula.
locale
Localidade a usar.
Valor retornado
Zero se for bem-sucedido; um código de erro em caso de falha.
Condições de erro
strDestination |
numberOfElements |
strSource |
Valor retornado | Conteúdo de strDestination |
---|---|---|---|---|
NULL ou não finalizado |
any | any | EINVAL |
não modificado |
any | any | NULL |
EINVAL |
strDestination[0] definido como 0 |
any | 0 ou muito pequeno | any | ERANGE |
strDestination[0] definido como 0 |
Comentários
A função strcat_s
acrescenta strSource
para strDestination
e encerra a cadeia de caracteres resultante com um caractere nulo. O caractere inicial de strSource
substitui o caractere nulo de terminação de strDestination
. O comportamento de strcat_s
é indefinido se as cadeias de origem e destino se sobrepõem.
O segundo parâmetro é o tamanho total do buffer, não o tamanho 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
e _mbscat_s
são versões de caracteres largos e de caracteres multibyte de strcat_s
. Os argumentos e o valor retornado de wcscat_s
são cadeias de caracteres largos. Os argumentos e o valor retornado de são cadeias de _mbscat_s
caracteres multibyte. Caso contrário, essas três funções se comportam de forma idêntica.
Se strDestination
for um ponteiro nulo, ou não for terminado em nulo, ou se strSource
for um NULL
ponteiro, ou se a cadeia de caracteres de destino for muito pequena, o manipulador de parâmetro inválido será invocado, conforme descrito em Validação de parâmetro. Se a execução puder continuar, essas funções retornarão EINVAL
e definirão errno
para EINVAL
.
As versões das funções que têm o sufixo _l
usam têm o mesmo comportamento, mas usam o parâmetro de localidade passado em vez da localidade atual. Para obter mais informações, consulte Localidade.
Em C++, o uso dessas funções é simplificado pelas sobrecargas de modelo; as sobrecargas podem inferir o tamanho do buffer automaticamente (eliminando a necessidade de especificar um argumento de tamanho) e podem substituir automaticamente funções mais antigas e não seguras por suas equivalentes mais recentes e seguras. Para obter mais informações, consulte Sobrecargas de modelo seguras.
As versões de biblioteca de depuração dessas funções preenchem o buffer com 0xFE. Para desabilitar esse comportamento, use _CrtSetDebugFillThreshold
.
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.
Mapeamentos de rotina de texto genérico
Rotina TCHAR.H |
_UNICODE e _MBCS não definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcscat_s |
strcat_s |
_mbscat_s |
wcscat_s |
Requisitos
Rotina | Cabeçalho necessário |
---|---|
strcat_s |
<string.h> |
wcscat_s |
<string.h> ou <wchar.h> |
_mbscat_s |
<mbstring.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
Confira o exemplo de código emstrcpy_s
, wcscpy_s
_mbscpy_s
.
Confira também
Manipulação de cadeia de caracteres
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