_mbsnbset
, _mbsnbset_l
Establece los primeros n bytes de una cadena de caracteres multibyte en un carácter especificado. Hay disponibles versiones más seguras de estas funciones; consulte _mbsnbset_s
, _mbsnbset_s_l
.
Importante
Esta API no se puede usar en aplicaciones que se ejecutan en Windows en tiempo de ejecución. Para obtener más información, vea Funciones de CRT no admitidas en aplicaciones de la Plataforma universal de Windows.
Sintaxis
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
);
Parámetros
str
Cadena que se va a modificar.
c
Valor del carácter de un solo byte o multibyte.
count
Número de bytes que se van a establecer.
locale
Configuración regional que se va a usar.
Valor devuelto
_mbsnbset
devuelve un puntero a la cadena modificada.
Comentarios
Las funciones _mbsnbset
y _mbsnbset_l
establecen, como máximo, los primeros count
bytes de str
en c
. Si count
es mayor que la longitud de str
, se usa la longitud de str
en lugar de count
. Si c
es un carácter multibyte y no se puede establecer completamente en el último byte especificado por count
, el último byte se rellena con un carácter en blanco. _mbsnbset
y _mbsnbset_l
no coloca un valor NULL de terminación al final de str
.
_mbsnbset
y _mbsnbset_l
es similar a _mbsnset
, excepto que establece count
bytes en lugar de count
caracteres de c
.
Si str
es o count
es NULL
cero, esta función genera una excepción de parámetro no válida, como se describe en Validación de parámetros. Si la ejecución puede continuar, errno
está establecido en EINVAL
y la función devuelve NULL
. Además, si c
no es un carácter multibyte válido, errno
se establece EINVAL
en y se usa un espacio en su lugar.
El valor de salida se ve afectado por el valor de la categoría LC_CTYPE
de la configuración regional. Para obtener más información, vea setlocale
. La _mbsnbset
versión de esta función usa la configuración regional actual para este comportamiento dependiente de la configuración regional; la _mbsnbset_l
versión es idéntica, salvo que usa el parámetro de configuración regional pasado en su lugar. Para obtener más información, vea Locale.
Nota de seguridad Esta API crea la posible amenaza de un problema de saturación del búfer. Los problemas de saturación del búfer son un método frecuente de ataque del sistema, que produce una elevación de privilegios no justificada. Para obtener más información, consulte Evitar saturaciones del búfer.
De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.
Asignaciones de rutinas de texto genérico
Rutina Tchar.h | _UNICODE y _MBCS no definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcsnset |
_strnset |
_mbsnbset |
_wcsnset |
_tcsnset_l |
_strnset_l |
_mbsnbset_l |
_wcsnset_l |
Requisitos
Routine | Encabezado necesario |
---|---|
_mbsnbset |
<mbstring.h> |
_mbsnbset_l |
<mbstring.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// 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
Consulte también
Manipulación de cadenas
_mbsnbcat
, _mbsnbcat_l
_strnset
, _strnset_l
, _wcsnset
, _wcsnset_l
, , _mbsnset
, _mbsnset_l
_strset
, _strset_l
, _wcsset
, _wcsset_l
, , _mbsset
, _mbsset_l