Udostępnij za pośrednictwem


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żna uwagaWaż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

System::String::concat

Zobacz też

Informacje

Manipulowanie ciągami (CRT)

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

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l

strspn, wcsspn, _mbsspn, _mbsspn_l