_mbsnbset_s
, _mbsnbset_s_l
Nastaví první n bajtů vícebajtového řetězce na zadaný znak. Tyto verze _mbsnbset
mají _mbsnbset_l
vylepšení zabezpečení, jak je popsáno v funkcích zabezpečení v CRT.
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
errno_t _mbsnbset_s(
unsigned char *str,
size_t size,
unsigned int c,
size_t count
);
errno_t _mbsnbset_s_l(
unsigned char *str,
size_t size,
unsigned int c,
size_t count,
_locale_t locale
);
template <size_t size>
errno_t _mbsnbset_s(
unsigned char (&str)[size],
unsigned int c,
size_t count
); // C++ only
template <size_t size>
errno_t _mbsnbset_s_l(
unsigned char (&str)[size],
unsigned int c,
size_t count,
_locale_t locale
); // C++ only
Parametry
str
Řetězec, který se má změnit.
size
Velikost vyrovnávací paměti řetězce.
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
Nula v případě úspěchu; v opačném případě kód chyby.
Poznámky
_mbsnbset_s_l
A _mbsnbset_s
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_s
a _mbsnbset_s_l
neumisťujte koncovou hodnotu null na konec str
.
_mbsnbset_s
a _mbsnbset_s_l
podobají _mbsnset
se , s tím rozdílem, že jsou nastaveny 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_s
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_s_l
je shodná s tím rozdílem, že místo toho používá předaný parametr národního prostředí. Další informace naleznete v tématu Národní prostředí.
V jazyce C++ je použití těchto funkcí zjednodušeno přetíženími šablon; přetížení mohou odvodit délku vyrovnávací paměti automaticky a tím eliminovat potřebu zadat argument velikosti. Další informace naleznete v tématu Přetížení šablon zabezpečení.
Verze knihovny ladění těchto funkcí nejprve vyplní vyrovnávací paměť 0xFE. Chcete-li toto chování zakázat, použijte _CrtSetDebugFillThreshold
.
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_s |
_strnset_s |
_mbsnbset_s |
_wcsnset_s |
_tcsnset_s_l |
_strnset_s _l |
_mbsnbset_s_l |
_wcsnset_s_l |
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
_mbsnbset_s |
<mbstring.h> |
_mbsnbset_s_l |
<mbstring.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// crt_mbsnbset_s.c
#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_s( string, sizeof(string), '*', 4 );
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