strcat_s, wcscat_s, _mbscat_s
Dodać ciąg znaków.Są to wersje strcat, wcscat, _mbscat z ulepszeń zabezpieczeń, zgodnie z opisem w Funkcje zabezpieczeń w CRT.
Ważne |
---|
_mbscat_sNie można używać w aplikacji, których wykonywanie w czasie wykonywania systemu Windows.Aby uzyskać więcej informacji, zobacz CRT funkcje nie obsługiwane przez /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
Parametry
strDestination
Nieprawidłowe działanie buforu ciągów docelowego zakończonym znakiem null.numberOfElements
Rozmiar docelowy bufor dla łańcucha.strSource
Nieprawidłowe działanie buforu ciągów źródła zakończonym znakiem null.
Wartość zwracana
Zero, jeśli kończy się pomyślnie; Kod błędu w przypadku awarii.
Warunki błędów
strDestination |
numberOfElements |
strSource |
Zwracana wartość |
ZawartośćstrDestination |
---|---|---|---|---|
NULLlub niezakończony |
wszelkie |
wszelkie |
EINVAL |
niemodyfikowane |
wszelkie |
wszelkie |
NULL |
EINVAL |
strDestination[0] ustawione na 0 |
wszelkie |
0 lub za mały |
wszelkie |
ERANGE |
strDestination[0] ustawione na 0 |
Uwagi
strcat_s Funkcja dołącza strSource do strDestination i kończy wynikowy ciąg znak null.Początkowy znak z strSource zastępuje kończącego znaku null z strDestination.Zachowanie strcat_s jest niezdefiniowana, jeśli nakładają się ciągi źródłowego i docelowego.
Należy zauważyć, że drugi parametr jest całkowity rozmiar buforu nie pozostała rozmiar:
char buf[16];
strcpy_s(buf, 16, "Start");
strcat_s(buf, 16, " End"); // Correct
strcat_s(buf, 16 – strlen(buf), " End"); // Incorrect
wcscat_si _mbscat_s szerokich znaków i znaków wielobajtowych wersje strcat_s.Argumenty i wartości zwracanej przez wcscat_s są ciągami szerokich znaków; tych z _mbscat_s są ciągami znaków wielobajtowych.Zmienia tych trzech funkcji zachowanie takich samych nazwach.
Jeśli strDestination jest pusty wskaźnik lub nie jest zakończony znakiem null, lub jeśli strSource jest NULL wskaźnik, lub jeśli ciąg docelowy jest zbyt mały, program obsługi nieprawidłowy parametr jest wywoływana, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może kontynuować, funkcje te zwracają EINVAL i errno do EINVAL.
W języku C++ korzystając z tych funkcji jest uproszczony przez przeciążenia szablonu; przeciążenia mogą wywnioskować długość buforu automatycznie (eliminując konieczność, aby określić argument rozmiar) i starszych, które nie są bezpieczne funkcje mogą automatycznie zastąpić z ich odpowiednikami nowsze, bezpieczne.Aby uzyskać więcej informacji, zobacz Secure, szablon Overloads.
Wersje do debugowania tych funkcji najpierw wypełnić bufor z 0xFD.Aby wyłączyć to zachowanie, należy użyć _CrtSetDebugFillThreshold.
Tekst rodzajowy rutynowych mapowania
TCHAR.Rozpoczęto wykonywanie procedury h |
_UNICODE & _MBCS nie zdefiniowany |
_MBCS, definicja |
_UNICODE, definicja |
---|---|---|---|
_tcscat_s |
strcat_s |
_mbscat_s |
wcscat_s |
Wymagania
Rozpoczęto wykonywanie procedury |
Wymaganego nagłówka |
---|---|
strcat_s |
<string.h> |
wcscat_s |
<string.h> lub <wchar.h> |
_mbscat_s |
<mbstring.h> |
Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.
Przykład
Zobacz przykład kodu w strcpy_s, wcscpy_s, _mbscpy_s.
Odpowiednik w programie .NET Framework
Zobacz też
Informacje
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