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


_mbsnbset, _mbsnbset_l

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

Важно!

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

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, длина str используется вместо count. Если c многобайтовый и не может быть полностью задан последнему байту, определенному count, последний байт дополняется пустым символом. _mbsnbset и _mbsnbset_l не устанавливают завершающий нулевой символ в конце str.

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

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

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

Замечание по безопасности   Этот API создает потенциальную угрозу, вызываемую проблемой выхода за границы буфера. Ошибки переполнения буфера — частый метод атаки системы, в результате которого происходит несанкционированное получение прав. Дополнительные сведения см. в разделе Как избежать переполнения буфера.

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

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

Output

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

Эквивалент в .NET Framework

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

См. также

Ссылки

Управление строками (CRT)

_mbsnbcat, _mbsnbcat_l

_strnset, _strnset_l, _wcsnset, _wcsnset_l, _mbsnset, _mbsnset_l

_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l