_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