_mbsnbset
, _mbsnbset_l
Çok baytlı bir dizenin ilk n baytını belirtilen karaktere ayarlar. Bu işlevlerin daha güvenli sürümleri mevcuttur; bkz. _mbsnbset_s
, _mbsnbset_s_l
.
Önemli
Bu API, Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz. Daha fazla bilgi için bkz. Evrensel Windows Platformu uygulamalarında desteklenmeyen CRT işlevleri.
Sözdizimi
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
);
Parametreler
str
Değiştirilecek dize.
c
Tek bayt veya çok baytlı karakter ayarı.
count
Ayarlanacak bayt sayısı.
locale
Kullanılacak yerel ayar.
Dönüş değeri
_mbsnbset
değiştirilen dizeye bir işaretçi döndürür.
Açıklamalar
_mbsnbset
ve _mbsnbset_l
işlevleri, en fazla ilk count
bayt değerini str
olarak c
ayarlar. uzunluğundan büyüksecount
, uzunluğu str
yerine count
kullanılır.str
Çok baytlı bir karakterse ve tarafından count
belirtilen son baytta tamamen ayarlanamıyorsac
, son bayt boş bir karakterle doldurulur. _mbsnbset
ve _mbsnbset_l
sonuna str
sonlandırıcı null yerleştirmez.
_mbsnbset
ve _mbsnbset_l
ile benzerdir_mbsnset
, ancak karakterleri c
yerine count
baytları ayarlarcount
.
count
NULL
veya sıfır isestr
, bu işlev Parametre doğrulamasında açıklandığı gibi geçersiz bir parametre özel durumu oluşturur. Yürütmenin devam etmesi için izin verilirse, errno
olarak ayarlanır EINVAL
ve işlevi döndürür NULL
. Ayrıca, geçerli bir çok baytlı karakter değilse c
, errno
olarak ayarlanır EINVAL
ve bunun yerine bir boşluk kullanılır.
Çıkış değeri, yerel ayarın LC_CTYPE
kategori ayarının ayarından etkilenir. Daha fazla bilgi için bkz. setlocale
. _mbsnbset
Bu işlevin sürümü, bu yerel ayara bağımlı davranış için geçerli yerel ayarı kullanır; _mbsnbset_l
sürüm, bunun yerine geçirilen yerel ayar parametresini kullanması dışında aynıdır. Daha fazla bilgi için bkz . Yerel Ayar.
Güvenlik Notu Bu API, arabellek taşması sorununun neden olduğu olası bir tehdide neden olur. Arabellek taşması sorunları sık karşılaşılan bir sistem saldırısı yöntemidir ve bu da ayrıcalıkların gereksiz bir şekilde yükseltilmesine neden olur. Daha fazla bilgi için bkz . Arabellek taşmalarından kaçınma.
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.
Genel metin yordamı eşlemeleri
Tchar.h yordamı | _UNICODE ve _MBCS tanımlanmadı |
_MBCS tanımlanan |
_UNICODE tanımlanan |
---|---|---|---|
_tcsnset |
_strnset |
_mbsnbset |
_wcsnset |
_tcsnset_l |
_strnset_l |
_mbsnbset_l |
_wcsnset_l |
Gereksinimler
Yordam | Gerekli başlık |
---|---|
_mbsnbset |
<mbstring.h> |
_mbsnbset_l |
<mbstring.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// 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 );
}
Çıktı
Before: This is a test
After: **** is a test
Ayrıca bkz.
Dize işleme
_mbsnbcat
, _mbsnbcat_l
_strnset
, _strnset_l
, _wcsnset
, , _wcsnset_l
, _mbsnset
, _mbsnset_l
_strset
, _strset_l
, _wcsset
, , _wcsset_l
, _mbsset
, _mbsset_l