Freigeben über


_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 countfestgelegt 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 NULLbeschrieben. 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