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


_mbsnbset_s, _mbsnbset_s_l

Задает первые n байты многобайтовой строки заданным символом. Эти версии имеют _mbsnbset_lулучшения безопасности, как описано в функциях _mbsnbsetбезопасности в CRT.

Важно!

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

Синтаксис

errno_t _mbsnbset_s(
   unsigned char *str,
   size_t size,
   unsigned int c,
   size_t count
);
errno_t _mbsnbset_s_l(
   unsigned char *str,
   size_t size,
   unsigned int c,
   size_t count,
   _locale_t locale
);
template <size_t size>
errno_t _mbsnbset_s(
   unsigned char (&str)[size],
   unsigned int c,
   size_t count
); // C++ only
template <size_t size>
errno_t _mbsnbset_s_l(
   unsigned char (&str)[size],
   unsigned int c,
   size_t count,
   _locale_t locale
); // C++ only

Параметры

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

size
Размер строкового буфера.

c
Однобайтовый или многобайтовый параметр.

count
Число байтов, которые нужно задать.

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

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

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

Замечания

Функции _mbsnbset_s и _mbsnbset_s_l устанавливают максимум первые несколько байт (count) str до c. Если значение count больше длины строки str, вместо параметра count используется длина строки str. Если c является многобайтовый символ и не может быть полностью задан в последний байт, заданный count, последний байт заполняется пустым символом. _mbsnbset_s и _mbsnbset_s_l не помещайте завершающий значение NULL в конце str.

_mbsnbset_s и _mbsnbset_s_l напоминают _mbsnset за тем исключением, что задают количество байт count, а не количество символов count для параметра c.

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

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

В C++ использование этих функций упрощено шаблонными перегрузками; перегрузки могут определить длину буфера автоматически, устранена необходимость указывать аргумент size. Дополнительные сведения см. в разделе "Безопасные перегрузки шаблонов".

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

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

Сопоставления подпрограмм универсального текста

Подпрограмма 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

Требования

Маршрут Обязательный заголовок
_mbsnbset_s <mbstring.h>
_mbsnbset_s_l <mbstring.h>

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

Пример

// crt_mbsnbset_s.c
#include <mbstring.h>
#include <stdio.h>

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

Выходные данные

Before: This is a test
After:  **** is a test

См. также

Обработка строк
_mbsnbcat, _mbsnbcat_l
_strnset, _strnset_l, _wcsnset, _wcsnset_l, _mbsnset, _mbsnset_l
_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l