strncat, _strncat_l, wcsncat, wcsncat_l, _mbsncat _mbsncat_l

Символы дополнения строки.Более безопасные версии этих функций, доступных в разделе strncat_s, _strncat_s_l, wcsncat_s, _wcsncat_s_l, _mbsncat_s, _mbsncat_s_l.

Важное примечаниеВажно

_mbsncat и _mbsncat_l нельзя использовать в приложениях, выполняемых в среды выполнения Windows.Дополнительные сведения см. в разделе Функции CRT не поддерживаются при /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

Параметры

  • strDest
    Завершенная объединения строки назначения.

  • strSource
    Объединения завершенной строка источника.

  • count
    Число символов, который требуется добавить.

  • locale
    Языковой стандарт, который необходимо использовать.

Возвращаемое значение

Возвращает указатель на строку назначения.Возвращаемое значение не зарезервировано для отображения ошибки.

Заметки

Функция strncat добавляет, по крайней мере, первые символы countstrSource имеет значение strDest.Начальный символ strSource перезаписывает конечный символ null strDest.Если нуль-символ отображается в strSource до того, как символы count добавляются, strncat добавляет все символы из strSource, до нуля-символа.Если count больше, чем длина strSource, то длина strSource используется вместо count.Все случаи, результирующая строка завершены с нулем-символом.Если происходит копирование между строками, которые перекрываются, расширения функциональности не определено.

Примечание о безопасностиПримечание по безопасности

strncat не проверяет наличие достаточного места в strDest; таким образом, что причиной переполнение буфера.Имейте в виду, что добавленное count ограничивает число знаков; нет ограничения на размер strDest.См. пример ниже.Дополнительные сведения см. в разделе Как избежать переполнения буфера.

wcsncat и _mbsncat — двубайтовая и многобайтовая символьные версии strncat.Строковые аргументы и возвращаемое значение wcsncat характерные черты; одно из строки _mbsncat многобайтовой кодировки.В остальных случаях эти три функции ведут себя идентично.

Выходное значение зависеть на параметром параметра категории LC_CTYPE языкового стандарта; дополнительные сведения см. в разделе setlocale.Версии этих функций без суффикса _l используют текущий языковой стандарт для данной функциональности, зависящей от языкового стандарта; версии с суффиксом _l идентичны, за исключением того, что они используют переданный параметр языкового стандарта.Для получения дополнительной информации см. Языковой стандарт.

В C, C-++, эти перегруженные функции имеют шаблона.Для получения дополнительной информации см. Предоставляйте перегруженный шаблона.

Универсальное текстовое сопоставление функций

Функция TCHAR.H

неопределенные _UNICODE & _MBCS

определенные _MBCS

Определение _UNICODE

_tcsncat

strncat

_mbsnbcat

wcsncat

_tcsncat_l

_strncat_l

_mbsnbcat_l

_wcsncat_l

ПримечаниеПримечание

_strncat_l и _wcsncat_l не имеют имеет зависимость от языкового стандарта и не предназначены для, что вызываются напрямую.Они предназначены для внутреннего использования _tcsncat_l.

Требования

Функция

Требуемый заголовок

strncat

<string.h>

wcsncat

<string.h> или <wchar.h>

_mbsncat

<mbstring.h>

_mbsncat_l

<mbstring.h>

Дополнительные сведения о совместимости см. в разделе Совместимость во введении.

Пример

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

Обратите внимание, что BadAppend вызвало переполнение буфера.

Эквивалент в .NET Framework

System::String::Concat

См. также

Ссылки

Управление строками (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

Языковой стандарт

Интерпретация последовательностей многобайтового символов