Share via


strcat_s, wcscat_s, _mbscat_s, _mbscat_s_l

Ajoute une chaîne. Ces versions de , wcscat_mbscatont des améliorations de strcatsécurité, comme décrit dans les fonctionnalités de sécurité dans le CRT.

Important

_mbscat_s et _mbscat_s_l ne peuvent pas être utilisées dans les applications qui s'exécutent dans Windows Runtime. Pour plus d’informations, consultez Fonctions CRT non prises en charge dans les applications de la plateforme Windows universelle.

Syntaxe

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

Paramètres

strDestination
Mémoire tampon de la chaîne de destination se terminant par un caractère Null.

numberOfElements
Taille de la mémoire tampon de la chaîne de destination.

strSource
Mémoire tampon de chaîne source se terminant par null.

locale
Paramètres régionaux à utiliser.

Valeur retournée

Zéro si l'opération a réussi ; code d'erreur en cas de échec.

Conditions de l’erreur

strDestination numberOfElements strSource Valeur retournée Contenu de strDestination
NULL ou inachevé tous tous EINVAL non modifié
tous tous NULL EINVAL strDestination[0] défini sur 0
tous 0 ou trop petit tous ERANGE strDestination[0] défini sur 0

Notes

La fonction strcat_s ajoute strSource à strDestination et termine la chaîne obtenue par un caractère Null. Le caractère initial de strSource remplace le caractère Null de fin de strDestination. Le comportement de strcat_s n'est pas défini si les chaînes source et de destination se chevauchent.

Le deuxième paramètre est la taille totale de la mémoire tampon, et non la taille 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 et _mbscat_s sont des versions à caractères larges et à caractères multioctets de strcat_s. Les arguments et la valeur de retour sont wcscat_s des chaînes à caractères larges. Les arguments et la valeur de retour sont _mbscat_s des chaînes de caractères multioctets. Ces trois fonctions se comportent sinon de façon identique.

S’il strDestination s’agit d’un pointeur Null ou n’est pas terminé par null, ou s’il strSource s’agit d’un NULL pointeur ou si la chaîne de destination est trop petite, le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres. Si l'exécution est autorisée à se poursuivre, ces fonctions retournent EINVAL et définissent errno avec la valeur EINVAL.

Les versions des fonctions qui ont le _l suffixe ont le même comportement, mais utilisent le paramètre de paramètres régionaux passé au lieu des paramètres régionaux actuels. Pour plus d’informations, consultez Locale.

En C++, l’utilisation de ces fonctions est simplifiée par les surcharges de modèle ; les surcharges peuvent déduire la longueur de la mémoire tampon automatiquement (ce qui évite d’avoir à spécifier un argument taille) et peuvent remplacer automatiquement les fonctions plus anciennes et non sécurisées par leurs équivalentes plus récentes et sécurisées. Pour plus d’informations, consultez Surcharges de modèles sécurisés.

Les versions de bibliothèque de débogage de ces fonctions remplissent d’abord la mémoire tampon avec 0xFE. Pour désactiver ce comportement, utilisez _CrtSetDebugFillThreshold.

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Mappages de routine de texte générique

TCHAR.H Routine _UNICODE et _MBCS non défini _MBCS Défini _UNICODE Défini
_tcscat_s strcat_s _mbscat_s wcscat_s

Spécifications

Routine En-tête requis
strcat_s <string.h>
wcscat_s <string.h> ou <wchar.h>
_mbscat_s <mbstring.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Exemple

Consultez l’exemple de code dans strcpy_s, wcscpy_s_mbscpy_s.

Voir aussi

Manipulation de chaîne
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