_itoa_s, _i64toa_s, _ui64toa_s, _itow_s, _i64tow_s, _ui64tow_s
Convierte un entero en cadena. Estas versiones de _itoa, _i64toa, _ui64toa, _itow, _i64tow, _ui64tow tienen mejoras de seguridad, como se describe en Características de seguridad de CRT.
errno_t _itoa_s(
int value,
char *buffer,
size_t sizeInCharacters,
int radix
);
errno_t _i64toa_s(
__int64 value,
char *buffer,
size_t sizeInCharacters,
int radix
);
errno_t _ui64toa_s(
unsigned _int64 value,
char *buffer,
size_t sizeInCharacters,
int radix
);
errno_t _itow_s(
int value,
wchar_t *buffer,
size_t sizeInCharacters,
int radix
);
errno_t _i64tow_s(
__int64 value,
wchar_t *buffer,
size_t sizeInCharacters,
int radix
);
errno_t _ui64tow_s(
unsigned __int64 value,
wchar_t *buffer,
size_t sizeInCharacters,
int radix
);
template <size_t size>
errno_t _itoa_s(
int value,
char (&buffer)[size],
int radix
); // C++ only
template <size_t size>
errno_t _itow_s(
int value,
wchar_t (&buffer)[size],
int radix
); // C++ only
Parámetros
[in] value
Número que se va a convertir.[out] buffer
Relleno con el resultado de la conversión.[in] sizeInCharacters
Tamaño del búfer en caracteres o caracteres anchos de solo- byte.[in] radix
Base de value; debe estar comprendido entre 2 y 36.
Valor devuelto
Devuelve cero si se ejecuta correctamente; devuelve un código de error si se produce un error. Si se aplican las condiciones de cualquiera de las siguientes, la función invoca un controlador no válido de parámetro, tal y como se describe en Validación de parámetros.
Condiciones de error
predeterminado |
buffer |
sizeInCharacters |
base |
Devolución |
---|---|---|---|---|
any |
NULL |
any |
any |
EINVAL |
any |
any |
<=0 |
any |
EINVAL |
any |
any |
<= longitud de la cadena de resultado necesaria |
any |
EINVAL |
any |
any |
any |
radix < 2 o radix > 36 |
EINVAL |
Problemas de seguridad
Estas funciones pueden generar una infracción de acceso si buffer no señala memoria válida y no es NULL, o si la longitud del búfer no es de tiempo suficiente para contener la cadena de resultado.
Comentarios
Salvo los parámetros y el valor devuelto, las funciones de _itoa_s tienen el mismo comportamiento que corresponder versiones menos seguro.
En C++, el uso de estas funciones se simplifica con las sobrecargas de plantilla; las sobrecargas pueden realizar una inferencia automáticamente de la longitud de búfer (lo que elimina la necesidad de especificar un argumento de tamaño) y pueden reemplazar automáticamente funciones anteriores no seguras con sus homólogos seguros más recientes. Para obtener más información, vea Sobrecargas de plantilla seguras.
Las versiones de depuración de estas funciones rellenan primero el búfer con 0xFD. Para deshabilitar este comportamiento, use _CrtSetDebugFillThreshold.
Asignaciones de rutina de texto genérico
Rutina Tchar.h |
_UNICODE y _MBCS no definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_itot_s |
_itoa_s |
_itoa_s |
_itow_s |
_i64tot_s |
_i64toa_s |
_i64toa_s |
_i64tow_s |
_ui64tot_s |
_ui64toa_s |
_ui64toa_s |
_ui64tow_s |
Requisitos
Rutina |
Encabezado necesario |
---|---|
_itoa_s |
<stdlib.h> |
_i64toa_s |
<stdlib.h> |
_ui64toa_s |
<stdlib.h> |
_itow_s |
<stdlib.h> o <wchar.h> |
_i64tow_s |
<stdlib.h> o <wchar.h> |
_ui64tow_s |
<stdlib.h> o <wchar.h> |
Para obtener más información sobre compatibilidad, vea Compatibilidad en la introducción.
Ejemplo
// crt_itoa_s.c
#include <stdlib.h>
#include <string.h>
int main( void )
{
char buffer[65];
int r;
for( r=10; r>=2; --r )
{
_itoa_s( -1, buffer, 65, r );
printf( "base %d: %s (%d chars)\n", r, buffer, strnlen(buffer, _countof(buffer)) );
}
printf( "\n" );
for( r=10; r>=2; --r )
{
_i64toa_s( -1L, buffer, 65, r );
printf( "base %d: %s (%d chars)\n", r, buffer, strnlen(buffer, _countof(buffer)) );
}
printf( "\n" );
for( r=10; r>=2; --r )
{
_ui64toa_s( 0xffffffffffffffffL, buffer, 65, r );
printf( "base %d: %s (%d chars)\n", r, buffer, strnlen(buffer, _countof(buffer)) );
}
}
Resultados
base 10: -1 (2 chars)
base 9: 12068657453 (11 chars)
base 8: 37777777777 (11 chars)
base 7: 211301422353 (12 chars)
base 6: 1550104015503 (13 chars)
base 5: 32244002423140 (14 chars)
base 4: 3333333333333333 (16 chars)
base 3: 102002022201221111210 (21 chars)
base 2: 11111111111111111111111111111111 (32 chars)
base 10: -1 (2 chars)
base 9: 145808576354216723756 (21 chars)
base 8: 1777777777777777777777 (22 chars)
base 7: 45012021522523134134601 (23 chars)
base 6: 3520522010102100444244423 (25 chars)
base 5: 2214220303114400424121122430 (28 chars)
base 4: 33333333333333333333333333333333 (32 chars)
base 3: 11112220022122120101211020120210210211220 (41 chars)
base 2: 1111111111111111111111111111111111111111111111111111111111111111 (64 chars)
base 10: 18446744073709551615 (20 chars)
base 9: 145808576354216723756 (21 chars)
base 8: 1777777777777777777777 (22 chars)
base 7: 45012021522523134134601 (23 chars)
base 6: 3520522010102100444244423 (25 chars)
base 5: 2214220303114400424121122430 (28 chars)
base 4: 33333333333333333333333333333333 (32 chars)
base 3: 11112220022122120101211020120210210211220 (41 chars)
base 2: 1111111111111111111111111111111111111111111111111111111111111111 (64 chars)