Freigeben über


strncat, _strncat_l, wcsncat, _wcsncat_l, _mbsncat, _mbsncat_l

Fügt Zeichen einer Zeichenfolge an. Sicherere Versionen dieser Funktionen sind verfügbar. Informationen dazu finden Sie unter strncat_s, _strncat_s_l, wcsncat_s, _wcsncat_s_l, _mbsncat_s, _mbsncat_s_l.

Wichtig

_mbsncat und _mbsncat_l können nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden.Weitere Informationen finden Sie unter CRT-Funktionen nicht mit /ZW unterstützt.

char *strncat(
   char *strDest,
   const char *strSource,
   size_t count 
);
wchar_t *wcsncat(
   wchar_t *strDest,
   const wchar_t *strSource,
   size_t count 
);
unsigned char *_mbsncat(
   unsigned char *strDest,
   const unsigned char *strSource,
   size_t count
);
unsigned char *_mbsncat_l(
   unsigned char *strDest,
   const unsigned char *strSource,
   size_t count,
   _locale_t locale
);
template <size_t size>
char *strncat(
   char (&strDest)[size],
   const char *strSource,
   size_t count 
); // C++ only
template <size_t size>
wchar_t *wcsncat(
   wchar_t (&strDest)[size],
   const wchar_t *strSource,
   size_t count 
); // C++ only
template <size_t size>
unsigned char *_mbsncat(
   unsigned char (&strDest)[size],
   const unsigned char *strSource,
   size_t count
); // C++ only
template <size_t size>
unsigned char *_mbsncat_l(
   unsigned char (&strDest)[size],
   const unsigned char *strSource,
   size_t count,
   _locale_t locale
); // C++ only

Parameter

  • strDest
    Auf NULL endende Zielzeichenfolge.

  • strSource
    Mit NULL endende Quellzeichenfolge.

  • count
    Anzahl der anzufügenden Zeichen.

  • locale
    Zu verwendendes Gebietsschema.

Rückgabewert

Gibt einen Zeiger zur Zielzeichenfolge zurück. Kein Rückgabewert ist zur Fehleranzeige reserviert.

Hinweise

Die strncat-Funktion fügt höchstens die ersten count Zeichen von strSource an strDest an. Das erste Zeichen von strSource überschreibt das abschließende Nullzeichen von strDest. Wenn ein NULL-Zeichen in strSource angezeigt wird, bevor count Zeichen angehängt wurden, fügt strncat alle Zeichen von strSource bis zum NULL-Zeichen an. Wenn count größer als die Länge von strSource ist, wird die Länge von strSource anstelle von count verwendet. In jedem Fall wird die Ergebniszeichenfolge mit einem NULL-Zeichen beendet. Wenn der Kopiervorgang zwischen Zeichenfolgen ausgeführt wird, die sich überschneiden, ist das Verhalten nicht definiert.

SicherheitshinweisSicherheitshinweis

strncat überprüft strDest nicht auf genügend Speicherplatz. Daher ist dies eine mögliche Ursache von Pufferüberläufen.Beachten Sie, dass count die Anzahl der angefügten Zeichen beschränkt. Es handelt sich nicht um eine Begrenzung der Größe von strDest.Siehe das unten aufgeführte Beispiel.Weitere Informationen finden Sie unter Vermeiden von Pufferüberläufen.

wcsncat und _mbsncat sind Breitzeichen- und Multibytezeichenversionen von strncat. Die Zeichenfolgenargumente und der Rückgabewert von wcsncat sind Zeichenfolgen mit Breitzeichen; die von _mbsncat sind Multibyte-Zeichenfolgen. Diese drei Funktionen verhalten sich andernfalls identisch.

Der Ausgabewert ist von der LC_CTYPE-Kategorieneinstellung des Gebietsschemas betroffen; weitere Informationen finden Sie unter setlocale. Die Versionen dieser Funktionen ohne das _l-Suffix verwenden das aktuelle Gebietsschema für dieses vom Gebietsschema abhängige Verhalten; die Versionen mit dem _l-Suffix sind beinahe identisch, verwenden jedoch stattdessen den ihnen übergebenen Gebietsschemaparameter. Weitere Informationen finden Sie unter Locale.

In C++ gibt es für diese Funktionen Vorlagenüberladungen. Weitere Informationen finden Sie unter Sichere Vorlagenüberladungen.

Zuordnung generischer Textroutinen

TCHAR.H-Routine

_UNICODE & _MBCS nicht definiert

_MBCS definiert

_UNICODE definiert

_tcsncat

strncat

_mbsnbcat

wcsncat

_tcsncat_l

_strncat_l

_mbsnbcat_l

_wcsncat_l

Hinweis

_strncat_l und _wcsncat_l haben keine Gebietsschemaabhängigkeit und sind nicht für den direkten Aufruf vorgesehen.Sie werden zur internen Verwendung von _tcsncat_l bereitgestellt.

Anforderungen

Routine

Erforderlicher Header

strncat

<string.h>

wcsncat

<string.h> oder <wchar.h>

_mbsncat

<mbstring.h>

_mbsncat_l

<mbstring.h>

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

Beispiel

// crt_strncat.c
// Use strcat and strncat to append to a string.
#include <stdlib.h>

#define MAXSTRINGLEN 39

char string[MAXSTRINGLEN+1];
// or char *string = malloc(MAXSTRINGLEN+1);

void BadAppend( char suffix[], int n )
{
   strncat( string, suffix, n );
}

void GoodAppend( char suffix[], size_t n )
{
   strncat( string, suffix, __min( n, MAXSTRINGLEN-strlen(string)) );
}

int main( void )
{
   string[0] = '\0';
   printf( "string can hold up to %d characters\n", MAXSTRINGLEN );

   strcpy( string, "This is the initial string!" );
   // concatenate up to 20 characters...
   BadAppend( "Extra text to add to the string...", 20 );
   printf( "After BadAppend :  %s (%d chars)\n", string, strlen(string) );

   strcpy( string, "This is the initial string!" );
   // concatenate up to 20 characters...
   GoodAppend( "Extra text to add to the string...", 20 );
   printf( "After GoodAppend:  %s (%d chars)\n", string, strlen(string) );
}

Ausgabe

string can hold up to 39 characters
After BadAppend :  This is the initial string!Extra text to add to (47 chars)
After GoodAppend:  This is the initial string!Extra text t (39 chars)

Beachten Sie, dass BadAppend einen Pufferüberlauf verursacht hat.

.NET Framework-Entsprechung

System::String::Concat

Siehe auch

Referenz

Zeichenfolgenbearbeitung (CRT)

_mbsnbcat, _mbsnbcat_l

strcat, wcscat, _mbscat

strcmp, wcscmp, _mbscmp

strcpy, wcscpy, _mbscpy

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

_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l

strspn, wcsspn, _mbsspn, _mbsspn_l

Locale

Interpretation von Mehrbytezeichensequenzen