_strnset_s, _strnset_s_l, _wcsnset_s, _wcsnset_s_l, _mbsnset_s, _mbsnset_s_l
Инициализирует символы строки определенным символом. В этих версиях _strnset, _strnset_l, _wcsnset, _wcsnset_l, _mbsnset, _mbsnset_l усовершенствована безопасность, как описано в разделе Функции безопасности в CRT.
Важно!
_mbsnset_s и _mbsnset_s_l невозможно использовать в приложениях, запускаемых в среде выполнения Windows.Дополнительные сведения см. в статье Функции CRT, которые не поддерживаются с ключом /ZW.
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, размер str используется вместо count. Ошибка возникает, если count больше numberOfElements, и оба этих параметра больше размера str.
_wcsnset_s и _mbsnset_s являются версиями функции _strnset_s для расширенных и многобайтовых символов. Строковым аргументом _wcsnset_s является строка расширенных символов; для _mbsnset_s — строка многобайтовых символов . В остальных случаях эти три функции ведут себя идентично.
Выходное значение зависит от настройки категории LC_CTYPE языкового стандарта; дополнительные сведения см. в разделе setlocale. Версии этих функций без суффикса _l используют текущий языковой стандарт для данной функциональности, зависящей от языкового стандарта; версии с суффиксом_l идентичны, за исключением того, что они используют переданный параметр языкового стандарта. Для получения дополнительной информации см. Языковой стандарт.
Отладочные версии этих функций сначала заполняют буфер значением 0xFD. Для отключения данного поведения используйте _CrtSetDebugFillThreshold.
Универсальное текстовое сопоставление функций
Подпрограмма 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 |
Требования
Подпрограмма |
Обязательный заголовок |
---|---|
_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 );
}