_mbsnbset
, _mbsnbset_l
Nastaví první n bajtů vícebajtového řetězce na zadaný znak. K dispozici jsou bezpečnější verze těchto funkcí; viz _mbsnbset_s
, _mbsnbset_s_l
.
Důležité
Toto rozhraní API nelze použít v aplikacích, které se spouští v prostředí Windows Runtime. Další informace najdete v tématu Funkce CRT, které nejsou v aplikacích Univerzální platforma Windows podporované.
Syntaxe
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
);
Parametry
str
Řetězec, který se má změnit.
c
Jednobajtové nebo vícebajtové nastavení znaků
count
Počet bajtů, které se mají nastavit
locale
Národní prostředí, které se má použít.
Vrácená hodnota
_mbsnbset
vrátí ukazatel na změněný řetězec.
Poznámky
_mbsnbset_l
A _mbsnbset
funkce se nastavují maximálně první count
bajty str
c
na hodnotu . Je-li count
větší než délka str
, délka str
je použita místo count
. Pokud c
je vícebajtový znak a nedá se nastavit úplně na poslední bajt určený count
, poslední bajt je vycpaný prázdným znakem. _mbsnbset
a _mbsnbset_l
neumisťuje koncovou hodnotu null na konec str
.
_mbsnbset
a _mbsnbset_l
je podobný _mbsnset
, s tím rozdílem, že nastavuje count
bajty místo count
znaků c
.
Pokud str
je NULL
nebo count
je nula, tato funkce vygeneruje neplatnou výjimku parametru, jak je popsáno v ověření parametru. Pokud je povoleno pokračovat provádění, errno
je nastavena na EINVAL
a funkce vrátí NULL
. c
Pokud není platný vícebajtový znak, errno
nastaví se EINVAL
a místo toho se použije mezera.
Výstupní hodnota je ovlivněna nastavením LC_CTYPE
nastavení kategorie národního prostředí. Další informace najdete na webu setlocale
. Verze _mbsnbset
této funkce používá aktuální národní prostředí pro toto chování závislé na národním prostředí. Verze _mbsnbset_l
je shodná s tím rozdílem, že místo toho používá parametr národního prostředí předaný. Další informace naleznete v tématu Národní prostředí.
Bezpečnostní poznámka : Toto rozhraní API způsobuje potenciální hrozbu, kterou způsobil problém s přetečením vyrovnávací paměti. Problémy s přetečením vyrovnávací paměti jsou častou metodou útoku na systém, což vede k neoprávněnému zvýšení oprávnění. Další informace najdete v tématu Zabránění přetečení vyrovnávací paměti.
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Mapování rutin obecného textu
Rutina Tchar.h | _UNICODE a _MBCS není definován |
_MBCS definovaný |
_UNICODE definovaný |
---|---|---|---|
_tcsnset |
_strnset |
_mbsnbset |
_wcsnset |
_tcsnset_l |
_strnset_l |
_mbsnbset_l |
_wcsnset_l |
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
_mbsnbset |
<mbstring.h> |
_mbsnbset_l |
<mbstring.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// 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 );
}
Výstup
Before: This is a test
After: **** is a test
Viz také
Manipulace s řetězci
_mbsnbcat
, _mbsnbcat_l
_strnset
, _strnset_l
, _wcsnset
, _wcsnset_l
, , _mbsnset
_mbsnset_l
_strset
, _strset_l
, _wcsset
, _wcsset_l
, , _mbsset
_mbsset_l