Udostępnij za pośrednictwem


strncat, _strncat_l, wcsncat, wcsncat_l, _mbsncat _mbsncat_l

Dołącz znaki ciągu.Dostępne są bardziej bezpieczne wersje tych funkcji, zobacz strncat_s, _strncat_s_l, wcsncat_s, _wcsncat_s_l, _mbsncat_s, _mbsncat_s_l .

Ważna uwagaWażne

_mbsncati _mbsncat_l nie 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.

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

Parametry

  • strDest
    Ciąg zakończony wartością zerową miejsca docelowego.

  • strSource
    Ciąg zakończony wartością zerową źródła.

  • count
    Liczba znaków, aby dołączyć.

  • locale
    Ustawienia regionalne używane.

Wartość zwracana

Zwraca wskaźnik do ciągu docelowego.Nie zwraca żadnej wartości jest zarezerwowany wystąpił błąd.

Uwagi

strncat Funkcja dołącza co najwyżej pierwszy count znaków z strSource do strDest.Początkowy znak z strSource zastępuje kończącego znaku null z strDest.Jeśli pojawi się znak null w strSource przed count znaki są dołączane, strncat dołącza wszystkie znaki z strSource, do znaku null.Jeśli count jest większa niż długość strSource, długość strSource jest używana zamiast count.Wszystkich przypadkach, wynikowy ciąg znaków jest zakończony znakiem null.Jeśli kopiowanie odbywa się między ciągami, które nakładają się, zachowanie jest niezdefiniowane.

Uwaga dotycząca zabezpieczeńUwaga dotycząca zabezpieczeń

strncatnie sprawdza wystarczająco dużo miejsca w strDest; Dlatego jest potencjalną przyczynę przekroczenia buforu.Należy pamiętać, że count ogranicza liczbę znaków dołączany; nie jest limit rozmiaru strDest.Zobacz przykład poniżej.Aby uzyskać więcej informacji, zobacz Unikanie przekroczeniem buforu.

wcsncati _mbsncat szerokich znaków i znaków wielobajtowych wersje strncat.Argumenty ciąg znaków i wartość zwracana przez wcsncat są ciągami szerokich znaków; tych z _mbsncat są ciągami znaków wielobajtowych.Zmienia tych trzech funkcji zachowanie takich samych nazwach.

Wartość produkcji jest zależny od ustawienia z LC_CTYPE kategorii ustawienie regionalne tzn. zobacz setlocale Aby uzyskać więcej informacji.Wersje te funkcje, bez _l sufiks Użyj bieżących ustawień regionalnych tego zachowania zależne od ustawień lokalnych; wersje z _l sufiks są identyczne z tym, że używają zamiast przekazany parametr ustawień regionalnych.Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.

W języku C++ te funkcje mają overloads szablonu.Aby uzyskać więcej informacji, zobacz Secure, szablon Overloads.

Tekst rodzajowy rutynowych mapowania

TCHAR.Rozpoczęto wykonywanie procedury h

_UNICODE & _MBCS nie zdefiniowany

_MBCS, definicja

_UNICODE, definicja

_tcsncat

strncat

_mbsnbcat

wcsncat

_tcsncat_l

_strncat_l

_mbsnbcat_l

_wcsncat_l

[!UWAGA]

_strncat_li _wcsncat_l mają ma zależności ustawień regionalnych i nie są przeznaczone do bezpośredniego wywoływania.One jedynie do użytku wewnętrznego przez _tcsncat_l.

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

strncat

<string.h>

wcsncat

<string.h> lub <wchar.h>

_mbsncat

<mbstring.h>

_mbsncat_l

<mbstring.h>

Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.

Przykład

// 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) );
}

Dane wyjściowe

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)

Należy zauważyć, że BadAppend spowodowała przepełnienie buforu.

Odpowiednik w programie .NET Framework

System::String::concat

Zobacz też

Informacje

Manipulowanie ciągami (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

Ustawienia regionalne

Interpretacja sekwencje znaków wielobajtowych