_mbsnbset_s
, _mbsnbset_s_l
Ustawia pierwsze n bajtów ciągu wielobajtowego na określony znak. Te wersje programu _mbsnbset
_mbsnbset_l
mają ulepszenia zabezpieczeń zgodnie z opisem w temacie Funkcje zabezpieczeń w narzędziu CRT.
Ważne
Tego interfejsu API nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows. Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane w aplikacjach platforma uniwersalna systemu Windows.
Składnia
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
Ciąg do zmiany.
size
Rozmiar buforu ciągu.
c
Ustawienie jednobajtowego lub wielobajtowego znaku.
count
Liczba bajtów do ustawienia.
locale
Ustawienia regionalne do użycia.
Wartość zwracana
Zero w przypadku powodzenia; w przeciwnym razie kod błędu.
Uwagi
Funkcje _mbsnbset_s
i _mbsnbset_s_l
ustawiają co najwyżej pierwsze count
bajty na str
c
wartość . Jeśli count
wartość jest większa niż długość str
, używana jest długość str
elementu zamiast count
. Jeśli c
jest znakiem wielobajtowym i nie można go ustawić całkowicie w ostatni bajt określony przez count
parametr , ostatni bajt jest dopełniany pustym znakiem. _mbsnbset_s
i _mbsnbset_s_l
nie umieszczaj wartości null zakończenia na końcu .str
_mbsnbset_s
i _mbsnbset_s_l
przypominają _mbsnset
, z tą różnicą, że ustawiają count
bajty, a nie count
znaki c
.
Jeśli str
wartość jest count
NULL
równa zero, ta funkcja generuje nieprawidłowy wyjątek parametru, zgodnie z opisem w temacie Walidacja parametru. Jeśli wykonywanie jest dozwolone do kontynuowania, jest ustawione na EINVAL
, errno
a funkcja zwraca wartość NULL
. Ponadto, jeśli c
nie jest prawidłowym znakiem wielobajtowym, jest ustawiona na EINVAL
, errno
a zamiast tego jest używana spacja.
Na wartość wyjściową ma wpływ ustawienie LC_CTYPE
ustawienia kategorii ustawień regionalnych. Aby uzyskać więcej informacji, zobacz setlocale
. Wersja _mbsnbset_s
tej funkcji używa bieżących ustawień regionalnych dla tego zachowania zależnego od ustawień regionalnych; _mbsnbset_s_l
wersja jest identyczna, z tą różnicą, że zamiast tego używa parametru ustawień regionalnych, który jest przekazywany. Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.
W języku C++użycie tych funkcji jest uproszczone przez przeciążenia szablonów; przeciążenia mogą automatycznie wnioskować długość buforu, a tym samym wyeliminować konieczność określenia argumentu rozmiaru. Aby uzyskać więcej informacji, zobacz Bezpieczne przeciążenia szablonów.
Wersje biblioteki debugowania tych funkcji najpierw wypełniają bufor 0xFE. Aby wyłączyć to zachowanie, użyj polecenia _CrtSetDebugFillThreshold
.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Mapowania procedur tekstu ogólnego
Procedura tchar.h | _UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_tcsnset_s |
_strnset_s |
_mbsnbset_s |
_wcsnset_s |
_tcsnset_s_l |
_strnset_s _l |
_mbsnbset_s_l |
_wcsnset_s_l |
Wymagania
Procedura | Wymagany nagłówek |
---|---|
_mbsnbset_s |
<mbstring.h> |
_mbsnbset_s_l |
<mbstring.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// 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 );
}
Wynik
Before: This is a test
After: **** is a test
Zobacz też
Manipulowanie ciągami
_mbsnbcat
, _mbsnbcat_l
_strnset
, , _strnset_l
, _wcsnset
, _wcsnset_l
, , _mbsnset
_mbsnset_l
_strset
, , _strset_l
, _wcsset
, _wcsset_l
, , _mbsset
_mbsset_l