_mbsnbset
, _mbsnbset_l
Define os primeiros n bytes de uma cadeia de caracteres multibyte como um caractere especificado. Versões mais seguras dessas funções estão disponíveis; confira _mbsnbset_s
, _mbsnbset_s_l
.
Importante
Esta API não pode ser usada 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.
Sintaxe
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
);
Parâmetros
str
Cadeia de caracteres a ser alterada.
c
Configuração de caractere multibyte ou de byte único.
count
Número de bytes a serem definidos.
locale
Localidade a usar.
Valor retornado
_mbsnbset
retorna um ponteiro para a cadeia de caracteres alterada.
Comentários
As funções _mbsnbset
e _mbsnbset_l
definem, no máximo, os primeiros count
bytes de str
para c
. Se count
for maior que o comprimento de str
, o comprimento de str
será usado ao invés de count
. Se c
for um caractere multibyte e não puder ser definido inteiramente no último byte especificado por count
, o último byte é preenchido com um caractere em branco. _mbsnbset
e _mbsnbset_l
não coloca um nulo de terminação no final de str
.
_mbsnbset
e _mbsnbset_l
é semelhante a _mbsnset
, exceto que define count
bytes em vez count
de caracteres de c
.
Se str
for ou count
NULL
for zero, essa função gerará uma exceção de parâmetro inválida, conforme descrito em Validação de parâmetro. Se a execução tiver permissão para continuar, errno
será definido como EINVAL
e a função retornará NULL
. Além disso, if c
não é um caractere multibyte válido, errno
é definido como EINVAL
e um espaço é usado.
O valor de saída é afetado pela configuração da categoria LC_CTYPE
da localidade. Para obter mais informações, consulte setlocale
. A _mbsnbset
versão dessa função usa a localidade atual para esse comportamento dependente de localidade; a _mbsnbset_l
versão é idêntica, exceto que ela usa o parâmetro locale passado. Para obter mais informações, consulte Localidade.
Observação de segurança Essa API causa uma ameaça em potencial em relação ao problema de estouro de buffer. Os problemas de estouro de buffer são um método frequente de ataque ao sistema, resultando em uma elevação de privilégio sem garantia. Para obter mais informações, confira Como evitar sobrecargas de buffer.
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 rotina de texto genérico
Rotina Tchar.h | _UNICODE e _MBCS não definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcsnset |
_strnset |
_mbsnbset |
_wcsnset |
_tcsnset_l |
_strnset_l |
_mbsnbset_l |
_wcsnset_l |
Requisitos
Rotina | Cabeçalho necessário |
---|---|
_mbsnbset |
<mbstring.h> |
_mbsnbset_l |
<mbstring.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
// 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 );
}
Saída
Before: This is a test
After: **** is a test
Confira também
Manipulação de cadeia de caracteres
_mbsnbcat
, _mbsnbcat_l
_strnset
, _strnset_l
, _wcsnset
, _wcsnset_l
, _mbsnset
, , _mbsnset_l
_strset
, _strset_l
, _wcsset
, _wcsset_l
, _mbsset
, , _mbsset_l