Condividi tramite


strncat, _strncat_l, wcsncat, wcsncat_l, _mbsncat _mbsncat_l

Aggiungere i caratteri di una stringa.Più versioni sicure di queste funzioni sono disponibili, vedere strncat_s, _strncat_s_l, wcsncat_s, _wcsncat_s_l, _mbsncat_s, _mbsncat_s_l.

Nota importanteImportante

_mbsncat e _mbsncat_l non possono essere utilizzati nelle applicazioni eseguite nelle finestre runtime.Per ulteriori informazioni, vedere Funzioni CRT non supportate con /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

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 utilizzare.

Valore restituito

Restituisce un puntatore alla stringa di destinazione.Nessun valore restituito è riservato per indicare un errore.

Note

La funzione di strncat accodamento, al massimo, i primi caratteri di count di strSource a strDest.Il carattere iniziale di strSource sovrascrive il carattere di terminazione null di strDest.Se un carattere null visualizzato in strSource prima che i caratteri di count vengano aggiunti, strncat aggiunge tutti i caratteri da strSource, fino al carattere null.Se count è maggiore della lunghezza di strSource, la lunghezza di strSource viene utilizzata al posto di count.Tutti i casi, viene terminato con un carattere null.Se copiare è compresa tra stringhe che si sovrappongono, il comportamento è definito.

Nota sulla sicurezzaNota sulla sicurezza

strncat non controlla se uno spazio sufficiente in strDest; è pertanto una causa potenziale dei sovraccarichi del buffer.Tenere presente che count limita il numero di caratteri aggiunto; non è un limite di dimensione di strDest.Vedere l'esempio riportato di seguito.Per ulteriori informazioni, vedere Evitare sovraccarichi del buffer.

wcsncat e _mbsncat sono versioni a caratteri di tipo "wide" e di caratteri multibyte di strncat.Gli argomenti della stringa e il valore restituito di wcsncat sono stringhe di caratteri estesi, tali di _mbsncat sono stringhe di caratteri multibyte.Altrimenti queste tre funzioni si comportano in modo identico.

Il valore di output è interessato dall'impostazione dell'impostazione di categoria LC_CTYPE delle impostazioni locali; vedere setlocale per ulteriori informazioni.Le versioni di queste funzioni senza il suffisso _l utilizzano le impostazioni locali correnti per il comportamento dipendente dalle impostazioni locali; le versioni con il suffisso _l sono identiche, ad eccezione del fatto che utilizzano il parametro delle impostazioni locali che viene passato.Per ulteriori informazioni, vedere Impostazioni locali.

In C++, queste funzioni hanno modelli di overload.Per ulteriori informazioni, vedere Assicurarsi che gli overload del modello.

Mapping di routine a Testo generico

TCHAR.H routine

_UNICODE & _MBCS non definiti

_MBCS definito

_UNICODE definito

_tcsncat

strncat

_mbsnbcat

wcsncat

_tcsncat_l

_strncat_l

_mbsnbcat_l

_wcsncat_l

[!NOTA]

_strncat_l e _wcsncat_l non dispongono di dipendenza delle impostazioni locali e non sono destinati a essere chiamati direttamente.Vengono forniti per utilizzo interno da _tcsncat_l.

Requisiti

Routine

Intestazione obbligatoria

strncat

<string.h>

wcsncat

<string.h> o <wchar.h>

_mbsncat

<mbstring.h>

_mbsncat_l

<mbstring.h>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.

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)

Si noti che BadAppend provoca un sovraccarico del buffer.

Equivalente .NET Framework

System::String::Concat

Vedere anche

Riferimenti

Modifica delle stringhe (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

Impostazioni locali

Interpretazione delle sequenze di caratteri multibyte