_mbsnbset
, _mbsnbset_l
Legt die ersten n Bytes einer Multibyte-Zeichenfolge auf ein angegebenes Zeichen fest. Sicherere Versionen dieser Funktionen sind verfügbar. Informationen dazu finden Sie unter _mbsnbset_s
, _mbsnbset_s_l
.
Wichtig
Diese API kann nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden. Weitere Informationen finden Sie im Artikel CRT functions not supported in Universal Windows Platform apps (In Apps für die universelle Windows-Plattform nicht unterstützte CRT-Funktionen).
Syntax
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
);
Parameter
str
Zu ändernde Zeichenfolge.
c
Einzelbyte- oder Multibytezeicheneinstellung.
count
Zahl der festzulegenden Bytes.
locale
Zu verwendendes Gebietsschema.
Rückgabewert
_mbsnbset
gibt einen Zeiger auf die geänderte Zeichenfolge zurück.
Hinweise
Die Funktionen _mbsnbset
und _mbsnbset_l
legen höchstens die ersten count
Bytes von str
auf c
fest. Wenn count
größer als die Länge von str
ist, wird die Länge von str
anstelle von count
verwendet. Wenn c
es sich um ein Multibytezeichen handelt und nicht vollständig auf das letzte byte count
festgelegt werden kann, wird das letzte Byte mit einem leeren Zeichen aufgefüllt. _mbsnbset
und _mbsnbset_l
platziert keine endende Null am Ende von str
.
_mbsnbset
und _mbsnbset_l
ähnelt _mbsnset
, mit der Ausnahme, dass sie count
Bytes anstelle count
von Zeichen von c
.
Wenn str
null ist NULL
oder count
ist, generiert diese Funktion eine ungültige Parameter-Ausnahme, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, wird errno
auf EINVAL
festgelegt, und die Funktion gibt NULL
beschrieben. c
Wenn es sich nicht um ein gültiges Multibytezeichen handelt, errno
wird stattdessen ein Leerzeichen festgelegtEINVAL
, und es wird stattdessen ein Leerzeichen verwendet.
Der Ausgabewert wird durch die Einstellung der LC_CTYPE
Kategorieeinstellung des Gebietsschemas beeinflusst. Weitere Informationen finden Sie unter setlocale
. Die _mbsnbset
Version dieser Funktion verwendet das aktuelle Gebietsschema für dieses gebietsschemaabhängige Verhalten. Die _mbsnbset_l
Version ist identisch, mit der Ausnahme, dass der gebietsschemaparameter verwendet wird, der stattdessen übergeben wird. Weitere Informationen finden Sie unter Locale.
Sicherheitshinweis Diese API stellt eine mögliche Bedrohung aufgrund eines Pufferüberlaufproblems dar. Pufferüberlaufprobleme werden häufig bei Systemangriffen eingesetzt, da sie zu einer unbefugten Ausweitung der Berechtigungen führen. Weitere Informationen finden Sie unter Vermeiden von Pufferüberläufen.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Mapping generischer Textroutinen
Tchar.h-Routine | _UNICODE und _MBCS nicht definiert |
_MBCS definiert |
_UNICODE definiert |
---|---|---|---|
_tcsnset |
_strnset |
_mbsnbset |
_wcsnset |
_tcsnset_l |
_strnset_l |
_mbsnbset_l |
_wcsnset_l |
Anforderungen
Routine | Erforderlicher Header |
---|---|
_mbsnbset |
<mbstring.h> |
_mbsnbset_l |
<mbstring.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// 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 );
}
Output
Before: This is a test
After: **** is a test
Siehe auch
Zeichenfolgenbearbeitung
_mbsnbcat
, _mbsnbcat_l
_strnset
, , _strnset_l
_wcsnset
, _wcsnset_l
, , _mbsnset
_mbsnset_l
_strset
, , _strset_l
_wcsset
, _wcsset_l
, , _mbsset
_mbsset_l