strcat_s, wcscat_s, _mbscat_s

Attache une chaîne. Ces versions strcat, wcscat, _mbscat présentent des améliorations de sécurité, comme décrit dans Fonctionnalités de sécurité dans le CRT.

Important

_mbscat_s ne peut pas être utilisée dans les applications qui s'exécutent dans le Windows Runtime.Pour plus d'informations, consultez Fonctions CRT non prises en charge avec /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

Paramètres

  • strDestination
    Mémoire tampon de chaîne source se terminant par 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.

Valeur de retour

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

Conditions d'erreur

strDestination

numberOfElements

strSource

Valeur de retour

Contenu de strDestination.

NULL ou incomplet

any

any

EINVAL

non modifié

any

any

NULL

EINVAL

strDestination[0] a la valeur 0

any

0, ou trop petit

any

ERANGE

strDestination[0] a la valeur 0

Notes

La fonction strcat_s ajoute strSource à strDestination et arrête la chaîne résultante avec un caractère Null. Le caractère initial de strSource remplace le caractère null de fin de strDestination. Le comportement de strcat_s est non défini si les chaînes source et de destination se superposent.

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

Si strDestination est un pointeur null, ou ne se termine pas par null, ou si strSource est un pointeur NULL, ou si la chaîne de destination est trop petite, le gestionnaire de paramètres invalides est appelé, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, ces fonctions retournent EINVAL et définissent errno avec la valeur EINVAL.

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 Sécuriser les surcharges de modèle.

Les versions debug de ces fonctions remplissent d'abord la mémoire tampon avec 0xFD. Pour désactiver ce comportement, utilisez _CrtSetDebugFillThreshold.

Mappages de routines de texte générique

Routine TCHAR.H

_UNICODE & _MBCS non définis

_MBCS défini

_UNICODE défini

_tcscat_s

strcat_s

_mbscat_s

wcscat_s

Configuration requise

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 Compatibilité.

Exemple

Consultez l'exemple de code dans strcpy_s, wcscpy_s, _mbscpy_s.

Équivalent .NET Framework

System::String::Concat

Voir aussi

Référence

Manipulation de chaînes (CRT)

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