_mbsnbset_s
, _mbsnbset_s_l
Legt die ersten n Bytes einer Multibyte-Zeichenfolge auf ein angegebenes Zeichen fest. Diese Versionen von _mbsnbset
, _mbsnbset_l
verfügen über Sicherheitsverbesserungen, wie in sicherheitsfeatures im CRT beschrieben.
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
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
Zu ändernde Zeichenfolge.
size
Die Größe des Zeichenfolgenpuffers.
c
Einzelbyte- oder Multibytezeicheneinstellung.
count
Zahl der festzulegenden Bytes.
locale
Zu verwendendes Gebietsschema.
Rückgabewert
Null, wenn erfolgreich, andernfalls ein Fehlercode.
Hinweise
Die Funktionen _mbsnbset_s
und _mbsnbset_s_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 festgelegt werden kann, count
wird das letzte Byte mit einem leeren Zeichen aufgefüllt. _mbsnbset_s
und _mbsnbset_s_l
platzieren Sie keinen endenden Nullwert am Ende von str
.
_mbsnbset_s
und _mbsnbset_s_l
ähneln _mbsnset
mit der Ausnahme, dass sie count
-Bytes statt count
-Zeichen von c
festlegen.
Wenn str
diese Funktion 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_s
-Version dieser Funktion verwendet das aktuelle Gebietsschema auf dieses vom Gebietsschema abhängige Verhalten. Die _mbsnbset_s_l
-Version ist beinahe identisch, abgesehen davon, dass es stattdessen den ihr übergebenen Gebietsschemaparameter verwendet. Weitere Informationen finden Sie unter Locale.
Die Verwendung dieser Funktionen in C++ wird durch Vorlagenüberladungen vereinfacht. Überladungen können automatisch die Pufferlänge ableiten, sodass kein Größenargument angegeben werden muss. Weitere Informationen finden Sie unter Secure Template Overloads.
Die Debugbibliotheksversionen dieser Funktionen füllen zuerst den Puffer mit 0xFE. Verwenden Sie _CrtSetDebugFillThreshold
zum Deaktivieren dieses Verhaltens .
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_s |
_strnset_s |
_mbsnbset_s |
_wcsnset_s |
_tcsnset_s_l |
_strnset_s _l |
_mbsnbset_s_l |
_wcsnset_s_l |
Anforderungen
Routine | Erforderlicher Header |
---|---|
_mbsnbset_s |
<mbstring.h> |
_mbsnbset_s_l |
<mbstring.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// 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
Siehe auch
Zeichenfolgenbearbeitung
_mbsnbcat
, _mbsnbcat_l
_strnset
, , _strnset_l
_wcsnset
, _wcsnset_l
, , _mbsnset
_mbsnset_l
_strset
, , _strset_l
_wcsset
, _wcsset_l
, , _mbsset
_mbsset_l