_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. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.
См. также
Ссылки
_strnset, _strnset_l, _wcsnset, _wcsnset_l, _mbsnset, _mbsnset_l