strcat_s, wcscat_s, _mbscat_s
Aggiungere una stringa.Queste sono versioni di strcat, wcscat, _mbscat con i miglioramenti della sicurezza come descritto in Funzionalità di sicurezza in CRT.
Importante |
---|
_mbscat_s non può essere utilizzato nelle applicazioni eseguite nelle finestre runtime.Per ulteriori informazioni, vedere Funzioni CRT non supportate con /ZW. |
errno_t strcat_s(
char *strDestination,
size_t numberOfElements,
const char *strSource
);
errno_t wcscat_s(
wchar_t *strDestination,
size_t numberOfElements,
const wchar_t *strSource
);
errno_t _mbscat_s(
unsigned char *strDestination,
size_t numberOfElements,
const unsigned char *strSource
);
template <size_t size>
errno_t strcat_s(
char (&strDestination)[size],
const char *strSource
); // C++ only
template <size_t size>
errno_t wcscat_s(
wchar_t (&strDestination)[size],
const wchar_t *strSource
); // C++ only
template <size_t size>
errno_t _mbscat_s(
unsigned char (&strDestination)[size],
const unsigned char *strSource
); // C++ only
Parametri
strDestination
Buffer della stringa destinazione che terminata con Null.numberOfElements
Dimensione del buffer della stringa di destinazione.strSource
Buffer della stringa sorgente che termina con Null.
Valore restituito
Zero se ha esito positivo; un codice di errore in caso di errore.
Condizioni di errore
strDestination |
numberOfElements |
strSource |
Valore restituito |
Contenuti di strDestination. |
---|---|---|---|---|
NULL o non terminato |
any |
any |
EINVAL |
non modificato |
any |
any |
NULL |
EINVAL |
Impostare strDestination[0] a 0 |
any |
0, o troppo piccolo. |
any |
ERANGE |
Impostare strDestination[0] a 0 |
Note
La funzione strcat_s aggiunge strSource a strDestination e termina la stringa risultato con un carattere null.Il carattere iniziale di strSource sovrascrive il carattere di terminazione null di strDestination.Il comportamento di strcat_s non è definito se le stringhe di origine e di destinazione si sovrappongono.
Si noti che il secondo parametro è la dimensione totale del buffer, non la dimensione rimanente:
char buf[16];
strcpy_s(buf, 16, "Start");
strcat_s(buf, 16, " End"); // Correct
strcat_s(buf, 16 – strlen(buf), " End"); // Incorrect
wcscat_s e _mbscat_s sono versioni a caratteri di tipo "wide" e di caratteri multibyte di strcat_s.Gli argomenti e il valore restituito di wcscat_s sono stringhe di caratteri di tipo "wide", quelli di _mbscat_s sono stringhe di caratteri multibyte.Altrimenti queste tre funzioni si comportano in modo identico.
Se strDestination è un puntatore null, o non è con terminazione null, o se strSource è un puntatore NULL, o se la stringa di destinazione è troppo piccola, il gestore di parametri non validi viene invocato, come descritto in Convalida dei parametri.Se all'esecuzione è permesso continuare, queste funzioni restituiscono EINVAL e impostano errno a EINVAL.
In C++, l'utilizzo di queste funzioni è semplificato dagli overload dei modelli; gli overload possono dedurre la lunghezza del buffer automaticamente (che elimina la necessità di specificare un argomento di dimensione) e possono sostituire automaticamente le funzioni precedenti, quelle non sicure alle più recenti e le controparti sicure.Per ulteriori informazioni, vedere Assicurarsi che gli overload del modello.
La versione di debug di queste funzioni per prima cosa riempiono il buffer con il valore 0xFD.Per disabilitare questo comportamento, utilizzare _CrtSetDebugFillThreshold.
Mapping di routine a Testo generico
TCHAR.H routine |
_UNICODE & _MBCS non definiti |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tcscat_s |
strcat_s |
_mbscat_s |
wcscat_s |
Requisiti
Routine |
Intestazione obbligatoria |
---|---|
strcat_s |
<string.h> |
wcscat_s |
<string.h> o <wchar.h> |
_mbscat_s |
<mbstring.h> |
Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.
Esempio
Vedere l'esempio di codice in strcpy_s, wcscpy_s, _mbscpy_s.
Equivalente .NET Framework
Vedere anche
Riferimenti
strncat, _strncat_l, wcsncat, wcsncat_l, _mbsncat _mbsncat_l
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l