_mbsnbset_s, _mbsnbset_s_l
Définit les n premiers octets d'une chaîne de caractères multioctets à un caractère spécifié. Ces versions _mbsnbset, _mbsnbset_l présentent des améliorations de sécurité, comme décrit dans Fonctionnalités de sécurité dans le 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 avec /ZW.
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
Définit la taille du tampon de chaine.c
Paramètre codé sur un octet ou à caractères multioctets.count
Nombre d'octets à définir.locale
Paramètres régionaux à utiliser.
Valeur de retour
Zéro dans le cas d'une opération réussie, sinon affiche un code d'erreur.
Notes
Les fonctions _mbsnbset_s et _mbsnbset_s_l définissent, au plus, les premiers octets count de str à c. Si count est supérieur à la longueur de str, la longueur de str est utilisée au lieu de count. Si c est un caractère multioctets et ne peut pas être défini complètement dans le dernier octet spécifié par count, le dernier octet est rempli avec un espace. _mbsnbset_s et _mbsnbset_s_l ne mettent pas de null final à la fin de str.
_mbsnbset_s et _mbsnbset_s_l ressemblent à _mbsnset, sauf qu'ils définissent des octets count plutôt que des caractères count de c.
Si str est NULL ou count est zéro, cette fonction génère une exception de paramètre non valide, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, errno est défini à EINVAL et la fonction retourne NULL. En outre, si c n'est pas un caractère multioctets valide, errno a la valeur EINVAL 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 ; consultez setlocale, _wsetlocale pour plus d'informations. La version _mbsnbset_s de cette fonction utilise les paramètres locaux actuels pour ce comportement dépendant des paramètres locaux; la version _mbsnbset_s_l est identique à part qu'elle utilise les paramètres locaux qui sont passés à la place. Pour plus d'informations, consultez Paramètres régionaux.
En C++, l'utilisation de ces fonctions est simplifiée par des surcharges de modèle ; les surcharges peuvent également déduire la longueur de la mémoire tampon automatiquement, en éliminant le besoin de spécifier un argument de taille. Pour plus d'informations, consultez Sécuriser les surcharges de modèle.
Les versions debug de ces fonctions remplissent d'abord la mémoire tampon avec 0xFD. Pour désactiver ce comportement, utilisez _CrtSetDebugFillThreshold.
Mappages de routines de texte générique
Routine Tchar.h |
_UNICODE et _MBCS non définis |
_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 |
Configuration requise
Routine |
En-tête requis |
---|---|
_mbsnbset_s |
<mbstring.h> |
_mbsnbset_s_l |
<mbstring.h> |
Pour plus d'informations sur la compatibilité, consultez Compatibilité.
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
Équivalent .NET Framework
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de code non managé.
Voir aussi
Référence
_strnset, _strnset_l, _wcsnset, _wcsnset_l, _mbsnset, _mbsnset_l