Partager via


_mbsnbset, _mbsnbset_l

Définit le premier n octets d’une chaîne de caractères multioctets sur un caractère spécifié. Des versions plus sécurisées de ces fonctions sont disponibles. Consultez _mbsnbset_s, _mbsnbset_s_l.

Important

Cette API ne peut pas être utilisée dans les applications qui s’exécutent dans le Windows Runtime. Pour plus d’informations, consultez Fonctions CRT non prises en charge dans les applications de la plateforme Windows universelle.

Syntaxe

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

Paramètres

str
Chaîne à modifier.

c
Paramètre de caractère codé sur un octet ou multioctet.

count
Nombre d'octets à définir.

locale
Paramètres régionaux à utiliser.

Valeur retournée

_mbsnbset retourne un pointeur désignant la chaîne modifiée.

Notes

Les fonctions _mbsnbset et _mbsnbset_l attribuent, au plus, aux count premiers octets de str la valeur c. Si la valeur count est supérieure à la longueur de str, la longueur de str est utilisée à la place de count. S’il c s’agit d’un caractère multioctet et ne peut pas être défini entièrement dans le dernier octet spécifié par count, le dernier octet est rembourré avec un caractère vide. _mbsnbset et _mbsnbset_l ne place pas une valeur null de fin à la fin de str.

_mbsnbset et _mbsnbset_l est similaire à _mbsnset, sauf qu’il définit count des octets plutôt que des count caractères de c.

Si str elle est NULL égale ou count égale à zéro, cette fonction génère une exception de paramètre non valide, comme décrit dans la validation des paramètres. Si l’exécution est autorisée à se poursuivre, errno a la valeur EINVAL et la fonction retourne NULL. En outre, s’il c n’est pas un caractère multioctet valide, errno est défini EINVAL sur et un espace est utilisé à la place.

La valeur de la sortie est affectée par la valeur du paramètre de la catégorie LC_CTYPE des paramètres régionaux. Pour plus d’informations, consultez setlocale. La _mbsnbset version de cette fonction utilise les paramètres régionaux actuels pour ce comportement dépendant des paramètres régionaux ; la _mbsnbset_l version est identique, sauf qu’elle utilise le paramètre de paramètres régionaux transmis à la place. Pour plus d’informations, consultez Locale.

Remarque relative à la sécurité Cette API est exposée à une menace potentielle liée à un problème de dépassement de mémoire tampon. Les dépassements de mémoire tampon sont une méthode fréquente d'attaque du système, ce qui provoque une élévation des privilèges injustifiée. Pour plus d’informations, consultez Solutions contre les dépassements de mémoire tampon.

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Mappages de routines de texte générique

Routine Tchar.h _UNICODE et _MBCS non définis _MBCS défini _UNICODE défini
_tcsnset _strnset _mbsnbset _wcsnset
_tcsnset_l _strnset_l _mbsnbset_l _wcsnset_l

Spécifications

Routine En-tête requis
_mbsnbset <mbstring.h>
_mbsnbset_l <mbstring.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Exemple

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

Sortie

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

Voir aussi

Manipulation de chaînes
_mbsnbcat, _mbsnbcat_l
_strnset, , _strnset_l, _wcsnset_l_wcsnset, , _mbsnset_mbsnset_l
_strset, , _strset_l, _wcsset_l_wcsset, , _mbsset_mbsset_l