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


_mbsnbset, _mbsnbset_l

Задает первые n байты многобайтовой строки заданным символом. Доступны более безопасные версии этих функций; see _mbsnbset_s, _mbsnbset_s_l.

Внимание

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

Синтаксис

unsigned char *_mbsnbset(
   unsigned char *str,
   unsigned int c,
   size_t count
);
unsigned char *_mbsnbset_l(
   unsigned char *str,
   unsigned int c,
   size_t count,
   _locale_t locale
);

Параметры

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

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

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

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

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

Функция _mbsnbset возвращает указатель на измененную строку.

Замечания

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

_mbsnbset и _mbsnbset_l аналогичен _mbsnset, за исключением того, что он задает count байты, а не count символы c.

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

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

Примечание о безопасности. Эти функции предполагают потенциальную угрозу, связанную с проблемой переполнения буфера. Проблемы переполнения буфера — это распространенный метод атак на системы, который приводит к несанкционированному повышению уровня прав. Дополнительные сведения см. в разделе "Избегание переполнения буфера".

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

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

Подпрограмма Tchar.h _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tcsnset _strnset _mbsnbset _wcsnset
_tcsnset_l _strnset_l _mbsnbset_l _wcsnset_l

Требования

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

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

Пример

// crt_mbsnbset.c
// compile with: /W3
#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( string, '*', 4 ); // C4996
   // Note; _mbsnbset is deprecated; consider _mbsnbset_s
   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