_strnset_s
, _strnset_s_l
_wcsnset_s
_wcsnset_s_l
_mbsnset_s
_mbsnset_s_l
_tcsnset_s
_tcsncset_s
_tcsncset_s_l
Инициализирует символы строки в конкретный символ. Эти версии , , _strnset_l
, _mbsnset_l
_wcsnset
_wcsnset_l
_mbsnset
имеют улучшения безопасности, как описано в функциях _strnset
безопасности в CRT.
Внимание
Функции _mbsnset_s
и _mbsnset_s_l
не могут использоваться в приложениях, запускаемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.
Для _tcsnset_s
, _tcsnset_s_l
_tcsncset_s
и _tcsncset_s_l
см. сопоставления универсальных текстовых функций.
Синтаксис
errno_t _strnset_s(
char *str,
size_t numberOfElements,
int c,
size_t count
);
errno_t _strnset_s_l(
char *str,
size_t numberOfElements,
int c,
size_t count,
_locale_t locale
);
errno_t _wcsnset_s(
wchar_t *str,
size_t numberOfElements,
wchar_t c,
size_t count
);
errno_t _wcsnset_s_l(
wchar_t *str,
size_t numberOfElements,
wchar_t c,
size_t count,
_locale_t locale
);
errno_t _mbsnset_s(
unsigned char *str,
size_t numberOfElements,
unsigned int c,
size_t count
);
errno_t _mbsnset_s_l(
unsigned char *str,
size_t numberOfElements,
unsigned int c,
size_t count,
_locale_t locale
);
Параметры
str
Строка, которую требуется изменить.
numberOfElements
Размер буфера str
.
c
Параметр символов.
count
Количество символов для изменения.
locale
Используемый языковой стандарт.
Возвращаемое значение
Нуль в случае успешного выполнения; в противном случае — код ошибки.
Эти функции проверяют свои аргументы. Если str
не является допустимой строкой, завершающейся значением NULL, или аргумент размера меньше или равен 0, вызывается обработчик недопустимых параметров, как описано в разделе проверки параметров. Если продолжение выполнения разрешено, эти функции возвращают код ошибки и устанавливают этот код ошибки в качестве значения для errno
. Код ошибки по умолчанию — если EINVAL
более конкретное значение не применяется.
Замечания
Эти функции в основном устанавливают первые символы count
str
в c
. Если значение count
больше размера str
, то вместо параметра count
используется размер str
. Если count
больше, чем numberOfElements
, и оба этих параметра больше, чем размер str
, возникает ошибка.
Функции _wcsnset_s
и _mbsnset_s
являются версиями функции _strnset_s
для расширенных и многобайтовых символов. Строковый аргумент _wcsnset_s
представляет собой строку с расширенным символом, то есть _mbsnset_s
многобайтовую строку. В остальном эти три функции ведут себя идентично.
Выходное значение зависит от параметра LC_CTYPE
категории языкового стандарта. Дополнительные сведения см. в разделе setlocale
. Версии этих функций без суффикса _l
используют текущий языковой стандарт для данного поведения, зависимого от языкового стандарта. Версии с суффиксом _l
идентичны, однако они используют переданный параметр языкового стандарта. Дополнительные сведения см. в разделе Locale.
Версии библиотек отладки этих функций сначала заполняют буфер 0xFE
. Чтобы отключить это поведение, используйте _CrtSetDebugFillThreshold
.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Сопоставления функций универсального текста
Функция в столбце сопоставляется с функцией в tchar.h
других столбцах в зависимости от набора символов, определенного во время компиляции.
Функция 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 |
_tcsncset_s |
_strnset_s |
_mbsnset_s |
_wcsnset_s |
_tcsncset_s_l |
_strnset_s_l |
_mbsnset_s_l |
_wcsnset_s_l |
Требования
Маршрут | Обязательный заголовок |
---|---|
_strnset_s |
<string.h> |
_strnset_s_l |
<tchar.h> |
_wcsnset_s |
<string.h> или <wchar.h> |
_wcsnset_s_l |
<tchar.h> |
_mbsnset_s , _mbsnset_s_l |
<mbstring.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
// crt_strnset_s.c
#include <string.h>
#include <stdio.h>
int main( void )
{
char string[15] = "This is a test";
/* Set not more than 4 characters of string to be *'s */
printf( "Before: %s\n", string );
_strnset_s( string, sizeof(string), '*', 4 );
printf( "After: %s\n", string );
}
Before: This is a test
After: **** is a test
См. также
Обработка строк
Локаль
Интерпретация последовательностей многобайтовых символов
strcat
, , wcscat
_mbscat
strcmp
, , wcscmp
_mbscmp
strcpy
, , wcscpy
_mbscpy
_strset
, , _strset_l
_wcsset_l
_wcsset
_mbsset
,_mbsset_l