_mbsnbset_s, _mbsnbset_s_l

Ustawia pierwsze n bajtów ciągu wielobajtowego na określony znak. Te wersje programu _mbsnbset_mbsnbset_lmają 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 strcwartość . 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 countparametr , ostatni bajt jest dopełniany pustym znakiem. _mbsnbset_si _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 countNULL 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. W celu uzyskania więcej informacji, zobacz następujący temat: 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 Zdefiniowane _UNICODE Zdefiniowane
_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