Поделиться через


_strnset_s, _strnset_s_l_wcsnset_s_wcsnset_s_l_mbsnset_s_mbsnset_s_l_tcsnset_s_tcsncset_s_tcsncset_s_l

Инициализирует символы строки в конкретный символ. Эти версии , , _strnset_l, _mbsnset_l_wcsnset_wcsnset_l_mbsnset имеют улучшения безопасности, как описано в функциях _strnsetбезопасности в CRT.

Внимание

Функции _mbsnset_s и _mbsnset_s_l не могут использоваться в приложениях, запускаемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.

Для _tcsnset_s, _tcsnset_s_l_tcsncset_sи _tcsncset_s_l см. сопоставления универсальных текстовых функций.

Синтаксис

errno_t _strnset_s(
   char *str,
   size_t numberOfElements,
   int c,
   size_t count
);
errno_t _strnset_s_l(
   char *str,
   size_t numberOfElements,
   int c,
   size_t count,
   _locale_t locale
);
errno_t _wcsnset_s(
   wchar_t *str,
   size_t numberOfElements,
   wchar_t c,
   size_t count
);
errno_t _wcsnset_s_l(
   wchar_t *str,
   size_t numberOfElements,
   wchar_t c,
   size_t count,
   _locale_t locale
);
errno_t _mbsnset_s(
   unsigned char *str,
   size_t numberOfElements,
   unsigned int c,
   size_t count
);
errno_t _mbsnset_s_l(
   unsigned char *str,
   size_t numberOfElements,
   unsigned int c,
   size_t count,
   _locale_t locale
);

Параметры

str
Строка, которую требуется изменить.

numberOfElements
Размер буфера str.

c
Параметр символов.

count
Количество символов для изменения.

locale
Используемый языковой стандарт.

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

Нуль в случае успешного выполнения; в противном случае — код ошибки.

Эти функции проверяют свои аргументы. Если str не является допустимой строкой, завершающейся значением NULL, или аргумент размера меньше или равен 0, вызывается обработчик недопустимых параметров, как описано в разделе проверки параметров. Если продолжение выполнения разрешено, эти функции возвращают код ошибки и устанавливают этот код ошибки в качестве значения для errno. Код ошибки по умолчанию — если EINVAL более конкретное значение не применяется.

Замечания

Эти функции в основном устанавливают первые символы countstr в c. Если значение count больше размера str, то вместо параметра count используется размер str. Если count больше, чем numberOfElements, и оба этих параметра больше, чем размер str, возникает ошибка.

Функции _wcsnset_s и _mbsnset_s являются версиями функции _strnset_s для расширенных и многобайтовых символов. Строковый аргумент _wcsnset_s представляет собой строку с расширенным символом, то есть _mbsnset_s многобайтовую строку. В остальном эти три функции ведут себя идентично.

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

Версии библиотек отладки этих функций сначала заполняют буфер 0xFE. Чтобы отключить это поведение, используйте _CrtSetDebugFillThreshold.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

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

Функция в столбце сопоставляется с функцией в tchar.h других столбцах в зависимости от набора символов, определенного во время компиляции.

Функция tchar.h _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tcsnset_s _strnset_s _mbsnbset_s _wcsnset_s
_tcsnset_s_l _strnset_s_l _mbsnbset_s_l _wcsnset_s_l
_tcsncset_s _strnset_s _mbsnset_s _wcsnset_s
_tcsncset_s_l _strnset_s_l _mbsnset_s_l _wcsnset_s_l

Требования

Маршрут Обязательный заголовок
_strnset_s <string.h>
_strnset_s_l <tchar.h>
_wcsnset_s <string.h> или <wchar.h>
_wcsnset_s_l <tchar.h>
_mbsnset_s, _mbsnset_s_l <mbstring.h>

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

Пример

// crt_strnset_s.c
#include <string.h>
#include <stdio.h>

int main( void )
{
   char string[15] = "This is a test";
   /* Set not more than 4 characters of string to be *'s */
   printf( "Before: %s\n", string );
   _strnset_s( string, sizeof(string), '*', 4 );
   printf( "After:  %s\n", string );
}
Before: This is a test
After:  **** is a test

См. также

Обработка строк
Локаль
Интерпретация последовательностей многобайтовых символов
strcat, , wcscat_mbscat
strcmp, , wcscmp_mbscmp
strcpy, , wcscpy_mbscpy
_strset, , _strset_l_wcsset_l_wcsset_mbsset,_mbsset_l