Freigeben über


strcat_s, , wcscat_s_mbscat_s_mbscat_s_l

Fügt eine Zeichenfolge an. Diese Versionen von strcat, wcscat_mbscat haben Sicherheitsverbesserungen, wie in sicherheitsfeatures im CRT beschrieben.

Wichtig

_mbscat_s und _mbscat_s_l können nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden. Weitere Informationen finden Sie im Artikel CRT functions not supported in Universal Windows Platform apps (In Apps für die universelle Windows-Plattform nicht unterstützte CRT-Funktionen).

Syntax

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

Parameter

strDestination
Auf NULL endender Zielzeichenfolgenpuffer.

numberOfElements
Größe des Zielzeichenfolgenpuffers.

strSource
Auf NULL endender Quellzeichenfolgepuffer.

locale
Zu verwendendes Gebietsschema.

Rückgabewert

Null, wenn erfolgreich, ein Fehlercode, wenn ein Fehler auftritt.

Fehlerbedingungen

strDestination numberOfElements strSource Rückgabewert Inhalt von strDestination
NULL oder nicht abgeschlossen any any EINVAL nicht geändert
any any NULL EINVAL strDestination[0], auf 0 festgelegt.
any 0 oder zu klein any ERANGE strDestination[0], auf 0 festgelegt.

Hinweise

Die strcat_s-Funktion fügt strSource an strDestination an und beendet die Ergebniszeichenfolge mit einem Nullzeichen. Das erste Zeichen von strSource überschreibt das abschließende Nullzeichen von strDestination. Wenn sich Quell- und Zielzeichenfolgen überlappen, ist das Verhalten von strcat_s undefiniert.

Der zweite Parameter ist die Gesamtgröße des Puffers, nicht die verbleibende Größe:

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

wcscat_s und _mbscat_s sind Breitzeichen- und Multibytezeichenversionen von strcat_s. Die Argumente und der Rückgabewert wcscat_s sind Zeichenfolgen mit breitem Zeichen. Die Argumente und der Rückgabewert sind _mbscat_s Multibyte-Zeichenfolgen. Diese drei Funktionen verhalten sich andernfalls identisch.

Wenn strDestination es sich um einen Nullzeiger handelt oder kein Null-Beendeter ist oder strSource wenn es sich um einen NULL Zeiger handelt oder die Zielzeichenfolge zu klein ist, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, geben diese Funktionen EINVAL zurück und stellen errno auf EINVAL ein.

Die Versionen von Funktionen mit dem _l Suffix weisen dasselbe Verhalten auf, verwenden jedoch den Gebietsschemaparameter, der anstelle des aktuellen Gebietsschemas übergeben wird. Weitere Informationen finden Sie unter Locale.

In C++ wird die Verwendung dieser Funktionen durch Vorlagenüberladungen vereinfacht; die Überladungen können automatisch Rückschlüsse auf die Pufferlänge ziehen (wodurch kein Größenargument mehr angegeben werden muss), und sie können automatisch die älteren, nicht sicheren Funktionen durch ihre neueren, sicheren Entsprechungen ersetzen. Weitere Informationen finden Sie unter Secure Template Overloads.

Die Debugbibliotheksversionen dieser Funktionen füllen zuerst den Puffer mit 0xFE. Verwenden Sie _CrtSetDebugFillThresholdzum Deaktivieren dieses Verhaltens .

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.

Mapping generischer Textroutinen

TCHAR.H-Routine _UNICODE und _MBCS nicht definiert _MBCS definiert _UNICODE definiert
_tcscat_s strcat_s _mbscat_s wcscat_s

Anforderungen

Routine Erforderlicher Header
strcat_s <string.h>
wcscat_s <string.h> oder <wchar.h>
_mbscat_s <mbstring.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

Sehen Sie sich das Codebeispiel in strcpy_s, wcscpy_s, _mbscpy_s.

Siehe auch

Zeichenfolgenbearbeitung
strncat, , _strncat_lwcsncat, _wcsncat_l, , _mbsncat_mbsncat_l
strncmp, , wcsncmp_mbsncmp_mbsncmp_l
strncpy, , _strncpy_lwcsncpy, _wcsncpy_l, , _mbsncpy_mbsncpy_l
_strnicmp, , _wcsnicmp_mbsnicmp, _strnicmp_l, , _wcsnicmp_l_mbsnicmp_l
strrchr, , wcsrchr_mbsrchr_mbsrchr_l
strspn, , wcsspn_mbsspn_mbsspn_l