strncat
, _strncat_l
, wcsncat
, _wcsncat_l
, _mbsncat
_mbsncat_l
Aggiunge caratteri di una stringa. Sono disponibili versioni più sicure di queste funzioni; vedere strncat_s
, _strncat_s_l
, wcsncat_s
_wcsncat_s_l
, , _mbsncat_s
, . _mbsncat_s_l
Importante
_mbsncat
e _mbsncat_l
non possono essere usati nelle applicazioni eseguite in Windows Runtime. Per altre informazioni, vedere Funzioni CRT non supportate nelle app della piattaforma UWP (Universal Windows Platform).
Sintassi
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
Parametri
strDest
Stringa di destinazione con terminazione Null.
strSource
Stringa di origine con terminazione null.
count
Numero di caratteri da aggiungere.
locale
Impostazioni locali da usare.
Valore restituito
Restituisce un puntatore alla stringa di destinazione. Nessun valore restituito è riservato per indicare un errore.
Osservazioni:
La funzione strncat
aggiunge a strDest
, al massimo, i primi count
caratteri di strSource
. Il carattere iniziale di strSource
sovrascrive il carattere Null di terminazione di strDest
. Se viene rilevato un carattere Null in strSource
prima dell'aggiunta di count
caratteri, strncat
aggiunge tutti i caratteri da strSource
fino al carattere Null. Se count
è maggiore della lunghezza di strSource
, la lunghezza di strSource
viene usata invece di count
. In tutti i casi, la stringa risultante termina con un carattere Null. Se la copia avviene tra stringhe che si sovrappongono, il comportamento non è definito.
Importante
strncat
non verifica la presenza di spazio sufficiente in strDest
, quindi è una causa possibile di sovraccarichi del buffer. Tenere presente che count
limita il numero di caratteri aggiunti e non si tratta di un limite per le dimensioni di strDest
. Vedi l'esempio seguente. Per altre informazioni, vedere Evitare sovraccarichi del buffer.
wcsncat
e _mbsncat
sono versioni con caratteri wide e caratteri multibyte di strncat
. Gli argomenti stringa e il valore restituito di wcsncat
sono stringhe di caratteri wide. Gli argomenti stringa e il valore restituito di sono stringhe di _mbsncat
caratteri multibyte. A parte ciò, queste tre funzioni si comportano in modo identico.
Il valore di output è interessato dall'impostazione dell'impostazione LC_CTYPE
della categoria delle impostazioni locali. Per ulteriori informazioni, vedere setlocale
. Le versioni di queste funzioni senza il _l
suffisso usano le impostazioni locali correnti per questo comportamento dipendente dalle impostazioni locali. Le versioni con il _l
suffisso sono identiche, ad eccezione del fatto che usano il parametro delle impostazioni locali passato. Per altre informazioni, vedere Locale.
In C++ queste funzioni presentano overload dei modelli. Per altre informazioni, vedere Proteggere gli overload dei modelli.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Mapping di routine di testo generico
TCHAR.H routine |
_UNICODE e _MBCS non definito |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tcsncat |
strncat |
_mbsnbcat |
wcsncat |
_tcsncat_l |
_strncat_l |
_mbsnbcat_l |
_wcsncat_l |
Nota
Le funzioni _strncat_l
e _wcsncat_l
non dipendono dalle impostazioni locali e non sono progettate per essere chiamate direttamente. Sono destinate solo all'uso interno per _tcsncat_l
.
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
strncat |
<string.h> |
wcsncat |
<string.h> o <wchar.h> |
_mbsncat |
<mbstring.h> |
_mbsncat_l |
<mbstring.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
// 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) );
}
Output
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)
È possibile notare che BadAppend
ha causato un sovraccarico del buffer.
Vedi anche
Manipolazione delle stringhe
_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
impostazioni locali
Interpretazione di sequenze di caratteri multibyte