Freigeben über


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

System::String::Concat

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

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l

strspn, wcsspn, _mbsspn, _mbsspn_l