Bagikan melalui


_mbsnbset_s, _mbsnbset_s_l

Mengatur byte n pertama dari string multibyte-character ke karakter tertentu. Versi _mbsnbset, _mbsnbset_l ini memiliki peningkatan keamanan, seperti yang dijelaskan dalam Fitur keamanan di CRT.

Penting

API ini tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime. Untuk informasi selengkapnya, lihat Fungsi CRT yang tidak didukung di aplikasi Platform Windows Universal.

Sintaks

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

Parameter

str
String yang akan diubah.

size
Ukuran buffer string.

c
Pengaturan byte tunggal atau multibyte-character.

count
Jumlah byte yang akan ditetapkan.

locale
Lokal untuk digunakan.

Nilai hasil

Nol jika berhasil; jika tidak, kode kesalahan.

Keterangan

Fungsi _mbsnbset_s dan _mbsnbset_s_l diatur, paling banyak, byte pertama count dari str ke c. Jika count lebih besar dari panjang str, panjang str digunakan alih-alih count. Jika c adalah karakter multibyte dan tidak dapat diatur sepenuhnya ke dalam byte terakhir yang ditentukan oleh count, byte terakhir diisi dengan karakter kosong. _mbsnbset_s dan _mbsnbset_s_l jangan menempatkan penghentian null di akhir str.

_mbsnbset_s dan _mbsnbset_s_l menyerupai _mbsnset, kecuali bahwa mereka menetapkan count byte daripada count karakter c.

Jika str adalah NULL atau count nol, fungsi ini menghasilkan pengecualian parameter yang tidak valid, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, errno diatur ke EINVAL dan fungsi mengembalikan NULL. Selain itu, jika c bukan karakter multibyte yang valid, errno diatur ke EINVAL dan spasi digunakan sebagai gantinya.

Nilai output dipengaruhi oleh pengaturan LC_CTYPE pengaturan kategori lokal. Untuk informasi selengkapnya, lihat setlocale . Versi _mbsnbset_s fungsi ini menggunakan lokal saat ini untuk perilaku dependen lokal ini; _mbsnbset_s_l versinya identik kecuali sebaliknya menggunakan parameter lokal yang diteruskan. Untuk informasi selengkapnya, lihat Lokal.

Di C++, penggunaan fungsi-fungsi ini disederhanakan oleh kelebihan beban templat; kelebihan beban dapat menyimpulkan panjang buffer secara otomatis dan dengan demikian menghilangkan kebutuhan untuk menentukan argumen ukuran. Untuk informasi selengkapnya, lihat Mengamankan kelebihan beban templat.

Versi pustaka debug dari fungsi-fungsi ini terlebih dahulu mengisi buffer dengan 0xFE. Untuk menonaktifkan perilaku ini, gunakan _CrtSetDebugFillThreshold.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Pemetaan rutin teks generik

Rutinitas Tchar.h _UNICODE dan _MBCS tidak ditentukan _MBCS Didefinisikan _UNICODE Didefinisikan
_tcsnset_s _strnset_s _mbsnbset_s _wcsnset_s
_tcsnset_s_l _strnset_s _l _mbsnbset_s_l _wcsnset_s_l

Persyaratan

Rutin Header yang diperlukan
_mbsnbset_s <mbstring.h>
_mbsnbset_s_l <mbstring.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

// 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 );
}

Output

Before: This is a test
After:  **** is a test

Lihat juga

Manipulasi string
_mbsnbcat, _mbsnbcat_l
_strnset, , _strnset_l_wcsnset, _wcsnset_l, , _mbsnset,_mbsnset_l
_strset, , _strset_l_wcsset, _wcsset_l, , _mbsset,_mbsset_l