strcat_s, wcscat_s, _mbscat_s
Fügt eine Zeichenfolge an. Diese Versionen von strcat, wcscat, _mbscat enthalten Sicherheitserweiterungen wie unter Sicherheitsfunktionen in der CRT beschrieben.
Wichtig
_mbscat_s kann nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden.Weitere Informationen finden Sie unter CRT-Funktionen nicht mit /ZW unterstützt.
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
Parameter
strDestination
Auf NULL endender Zielzeichenfolgenpuffer.numberOfElements
Größe des Zielzeichenfolgenpuffers.strSource
Auf NULL endender Quellzeichenfolgepuffer.
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.
Beachten Sie, dass es sich bei dem zweiten Parameter um die Gesamtgröße des Puffers handelt, nicht um 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 von wcscat_s sind Breitzeichen-Zeichenfolgen; die von _mbscat_s sind Mehrbyte-Zeichenfolgen. Diese drei Funktionen verhalten sich andernfalls identisch.
Wenn strDestination ein NULL-Zeiger ist oder nicht mit NULL endet, oder wenn strSource ein NULL-Zeiger ist, oder wenn die Zielzeichenfolge zu klein ist, wird der Handler für ungültige Parameter aufgerufen, wie in Parametervalidierung beschrieben. Wenn die weitere Ausführung zugelassen wird, geben diese Funktionen EINVAL zurück und stellen errno auf EINVAL ein.
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 Sichere Vorlagenüberladungen.
Die Debugversionen dieser Funktionen füllen zunächst den Puffer mit "0xFD" auf. Mit _CrtSetDebugFillThreshold deaktivieren Sie dieses Verhalten.
Zuordnung generischer Textroutinen
TCHAR.H-Routine |
_UNICODE & _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
Siehe hierzu das Codebeispiel unter strcpy_s, wcscpy_s, _mbscpy_s.
.NET Framework-Entsprechung
Siehe auch
Referenz
Zeichenfolgenbearbeitung (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