_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_l
_wcsnset
_mbsnset
,_mbsnset_l
_strset
, , _strset_l
_wcsset_l
_wcsset
_mbsset
,_mbsset_l