_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