Partilhar via


_strnset_s, _strnset_s_l, _wcsnset_s, _wcsnset_s_l, _mbsnset_s, _mbsnset_s_l_tcsnset_s_tcsncset_s,_tcsncset_s_l

Inicializa os caracteres de uma cadeia de caracteres para um determinado caractere. Essas versões do , _strnset_l, , _wcsnset_l_wcsnset, _mbsnset, _mbsnset_l têm aprimoramentos de _strnsetsegurança, conforme descrito em Recursos de segurança no CRT.

Importante

_mbsnset_s e _mbsnset_s_l não podem ser usados em aplicativos executados no Windows Runtime. Para obter mais informações, confira Funções do CRT sem suporte em aplicativos da Plataforma Universal do Windows.

Para _tcsnset_s, _tcsnset_s_l, _tcsncset_se _tcsncset_s_l consulte Mapeamentos de função de texto genérico.

Sintaxe

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
);

Parâmetros

str
Cadeia de caracteres a ser alterada.

numberOfElements
O tamanho do buffer str.

c
Configuração de caractere.

count
O número de caracteres a ser definido.

locale
Localidade a usar.

Valor retornado

Zero se for bem-sucedido; caso contrário, um código de erro.

Essas funções validam seus argumentos. Se str não for uma cadeia de caracteres válida terminada em nulo ou o argumento de tamanho for menor ou igual a 0, o manipulador de parâmetro inválido será invocado, conforme descrito em Validação de parâmetro. Se a execução tiver permissão para continuar, essas funções retornarão um código de erro e errno será definido para esse código de erro. O código de erro padrão é EINVAL se um valor mais específico não se aplicar.

Comentários

Essas funções definem, no máximo, os primeiros count caracteres de str para c. Se count é maior que o tamanho do str, o tamanho de str é usado em vez de count. Ocorrerá um erro se count for maior do que numberOfElements e esses dois parâmetros são maiores que o tamanho de str.

_wcsnset_s e _mbsnset_s são versões de caracteres largos e de caracteres multibyte de _strnset_s. O argumento de string of _wcsnset_s é uma string de caracteres largos; o de _mbsnset_s é uma string de caracteres multibyte. Caso contrário, essas três funções se comportam de forma idêntica.

O valor de saída é afetado pela configuração da categoria LC_CTYPE da localidade. Para obter mais informações, consulte setlocale. As versões dessas funções sem o sufixo _l usam a localidade atual desse comportamento dependente da localidade. As versões com o sufixo _l são idênticas, exceto por usarem o parâmetro de localidade passado em seu lugar. Para obter mais informações, consulte Localidade.

As versões da biblioteca de depuração dessas funções primeiro preenchem o buffer com 0xFE. Para desabilitar esse comportamento, use _CrtSetDebugFillThreshold.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.

Mapeamentos de funções de texto genérico

A função na coluna é mapeada tchar.h para a função nas outras colunas, dependendo do conjunto de caracteres definido em tempo de compilação.

Função tchar.h _UNICODE e _MBCS não definidos _MBCS definido _UNICODE definido
_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

Requisitos

Rotina Cabeçalho necessário
_strnset_s <string.h>
_strnset_s_l <tchar.h>
_wcsnset_s <string.h> ou <wchar.h>
_wcsnset_s_l <tchar.h>
_mbsnset_s, _mbsnset_s_l <mbstring.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Exemplo

// 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

Confira também

Manipulação de cadeia de caracteres
Localidade
Interpretação de sequências de caracteres multibyte
strcat, wcscat, _mbscat
strcmp, wcscmp, _mbscmp
strcpy, wcscpy, _mbscpy
_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, , _mbsset_l