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.
Wichtig |
---|
_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.
Sicherheitshinweis |
---|
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 |
Hinweis |
---|
_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
Siehe auch
Referenz
Zeichenfolgenbearbeitung (CRT)
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