Freigeben über


strncat, _strncat_l, wcsncat, wcsncat_l, _mbsncat _mbsncat_l

Fügen Sie Zeichen einer Zeichenfolge.Sicherere Versionen dieser Funktionen sind, finden strncat_s, _strncat_s_l, wcsncat_s, _wcsncat_s_l, _mbsncat_s, _mbsncat_s_l verfügbar.

Wichtiger HinweisWichtig

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

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
    Auf NULL endende Quellzeichenfolge.

  • count
    Zahl anzufügen Zeichen.

  • locale
    Zu verwendende Gebietsschema.

Rückgabewert

Gibt einen Zeiger auf die Zielzeichenfolge zurück.Kein Rückgabewert wird reserviert, um einen Fehler anzugeben.

Hinweise

Die Funktion strncat fügt höchstens die ersten count Zeichen aus strSource zu strDest an.Das erste Zeichen von strSource überschreibt das NULL von strDest.Wenn ein NULL-Zeichen in strSource angezeigt wird, bevor count Zeichen angefügt werden, 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 count verwendet.Die alle Fälle, die Ergebniszeichenfolge wird mit einem NULL-Zeichen beendet.Wenn das Kopieren zwischen Zeichenfolgen stattfindet, die sich überschneiden, wird das Verhalten nicht definiert.

SicherheitshinweisSicherheitshinweis

strncat überprüft nicht für genügend Speicherplatz in strDest; Daher ist es eine mögliche Ursache von Pufferüberläufen.Beachten Sie, dass count die Anzahl der angefügten Zeichen beschränkt; Es ist keine Grenzwert für die Größe von strDest.Nachfolgend finden Sie ein Beispiel hierzu.Weitere Informationen finden Sie unter Vermeiden von Pufferüberläufen.

wcsncat und _mbsncat sind Breitzeich und Mehrbytezeichen-Versionen von strncat.Die Zeichenfolgenargumente und der Rückgabewert von wcsncat sind Breitzeichen-Zeichenfolgen; die von _mbsncat sind Mehrbyte-Zeichenfolgen.Diese drei Funktionen verhalten sich andernfalls identisch.

Der Ausgabewert wird durch die Einstellung der LC_CTYPE Kategorieneinstellung des Gebietsschemas betroffen; setlocale finden Sie weitere Informationen.Die Versionen dieser Funktionen ohne das _l Suffix verwenden das aktuelle Gebietsschema für dieses Verhalten abhängig; die Versionen mit dem _l Suffix sind identisch, allerdings verwenden den Gebietsschemaparameter, der in stattdessen übergeben wird.Weitere Informationen finden Sie unter Gebietsschema.

In C++ sind diese Funktionen Vorlagenüberladungen.Weitere Informationen finden Sie unter Speichern Sie Vorlagen-Überladungen.

Zuordnung generische Textroutinen

TCHAR.H-Routine

_UNICODE & _MBCS nicht definiert.

_MBCS definiert

_UNICODE definiert

_tcsncat

strncat

_mbsnbcat

wcsncat

_tcsncat_l

_strncat_l

_mbsnbcat_l

_wcsncat_l

HinweisHinweis

_strncat_l und _wcsncat_l haben keine Gebietsschemaabhängigkeit und ist nicht vorgesehen, diese direkt aufgerufen werden.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>

So zusätzlicher Kompatibilitätsinformation finden Sie unter Kompatibilität in der Einführung.

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

überprüfte, 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

Gebietsschema

Interpretation von Mehrbytezeichen-Sequenzen