Partager via


_mbsnbset_s, _mbsnbset_s_l

Définit le premier n octets d’une chaîne de caractères multioctets sur un caractère spécifié. Ces versions ont des améliorations de _mbsnbset_mbsnbset_lsécurité, comme décrit dans les fonctionnalités de sécurité du CRT.

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

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

Paramètres

str
Chaîne à modifier.

size
Taille de la mémoire tampon de chaîne.

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

Zéro en cas de réussite ; code d'erreur dans un autre cas.

Notes

Les fonctions _mbsnbset_s et _mbsnbset_s_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_s et _mbsnbset_s_l ne placez pas une valeur null de fin à la fin de str.

Les fonctions _mbsnbset_s et _mbsnbset_s_l ressemblent à _mbsnset, à ceci près qu'elles définissent count octets plutôt que 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 sortie est affectée par le paramètre de catégorie LC_CTYPE des paramètres régionaux. Pour plus d’informations, consultez setlocale. La version _mbsnbset_s de cette fonction utilise les paramètres régionaux actifs pour ce comportement dépendant des paramètres régionaux ; la version _mbsnbset_s_l est identique, à ceci près qu'elle utilise à la place les paramètres régionaux qui sont passés. Pour plus d’informations, consultez Locale.

En C++, l’utilisation de ces fonctions est simplifiée par les surcharges de modèle ; les surcharges peuvent déduire automatiquement la longueur de la mémoire tampon, ce qui évite ainsi d’avoir à spécifier un argument de taille. Pour plus d’informations, consultez Surcharges de modèles sécurisés.

Les versions de bibliothèque de débogage de ces fonctions remplissent d’abord la mémoire tampon avec 0xFE. Pour désactiver ce comportement, utilisez _CrtSetDebugFillThreshold.

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 routine de texte générique

Routine Tchar.h _UNICODE et _MBCS non défini _MBCS Défini _UNICODE Défini
_tcsnset_s _strnset_s _mbsnbset_s _wcsnset_s
_tcsnset_s_l _strnset_s _l _mbsnbset_s_l _wcsnset_s_l

Spécifications

Routine En-tête requis
_mbsnbset_s <mbstring.h>
_mbsnbset_s_l <mbstring.h>

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

Exemple

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

Sortie

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

Voir aussi

Manipulation de chaîne
_mbsnbcat, _mbsnbcat_l
_strnset, _strnset_l, _wcsnset, _wcsnset_l, _mbsnset, _mbsnset_l
_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l