_itoa_s
, _ltoa_s
, _ultoa_s
, _i64toa_s
, _ui64toa_s
, _itow_s
, _ltow_s
_ultow_s
, _i64tow_s
_ui64tow_s
정수를 문자열로 변환합니다. 이러한 함수는 CRT의 _itow
_itoa
보안 기능에 설명된 대로 향상된 보안 기능이 있는 함수의 버전입니다.
구문
errno_t _itoa_s( int value, char * buffer, size_t size, int radix );
errno_t _ltoa_s( long value, char * buffer, size_t size, int radix );
errno_t _ultoa_s( unsigned long value, char * buffer, size_t size, int radix );
errno_t _i64toa_s( long long value, char *buffer,
size_t size, int radix );
errno_t _ui64toa_s( unsigned long long value, char *buffer,
size_t size, int radix );
errno_t _itow_s( int value, wchar_t *buffer,
size_t size, int radix );
errno_t _ltow_s( long value, wchar_t *buffer,
size_t size, int radix );
errno_t _ultow_s( unsigned long value, wchar_t *buffer,
size_t size, int radix );
errno_t _i64tow_s( long long value, wchar_t *buffer,
size_t size, int radix );
errno_t _ui64tow_s( unsigned long long value, wchar_t *buffer,
size_t size, int radix
);
// These template functions are C++ only:
template <size_t size>
errno_t _itoa_s( int value, char (&buffer)[size], int radix );
template <size_t size>
errno_t _ltoa_s( long value, char (&buffer)[size], int radix );
template <size_t size>
errno_t _ultoa_s( unsigned long value, char (&buffer)[size], int radix );
template <size_t size>
errno_t _itow_s( int value, wchar_t (&buffer)[size], int radix );
template <size_t size>
errno_t _ltow_s( long value, wchar_t (&buffer)[size], int radix );
template <size_t size>
errno_t _ultow_s( unsigned long value, wchar_t (&buffer)[size], int radix );
매개 변수
value
변환할 숫자입니다.
buffer
변환 결과를 보유하는 출력 버퍼입니다.
size
문자 또는 와이드 문자의 buffer
크기입니다.
radix
변환 value
하는 데 사용할 radix 또는 숫자 기준이며, 2-36 범위에 있어야 합니다.
반환 값
성공 시 0이고, 실패 시 오류 코드입니다. 다음 조건이 적용되는 경우 함수는 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기를 호출합니다.
오류 조건
value | buffer | 크기 | radix | Return |
---|---|---|---|---|
any | NULL |
any | any | EINVAL |
any | any | <=0 | any | EINVAL |
any | any | <= 필요한 결과 문자열의 길이 | any | EINVAL |
any | any | any | radix < 2 또는 radix > 36 |
EINVAL |
보안 문제
이러한 함수는 유효한 메모리NULL
를 가리키지 않거나 버퍼 길이가 결과 문자열을 보유하기에 충분하지 않은 경우 액세스 위반 buffer
을 생성할 수 있습니다.
설명
매개 변수 및 반환 값을 제외하고 함수 _itoa_s
패밀리와 _itow_s
함수 패밀리는 덜 안전한 _itoa
해당 버전과 _itow
동일한 동작을 갖습니다.
C++에서는 템플릿 오버로드로 인해 이러한 함수를 사용하는 것이 보다 간단해 집니다. 오버로드는 버퍼 길이를 자동으로 유추할 수 있으며(크기 인수를 지정할 필요가 없어짐), 기존의 비보안 함수를 보다 최신의 보안 대응 함수로 자동으로 바꿀 수 있습니다. 자세한 내용은 안전한 템플릿 오버로드를 참조하세요.
이러한 함수의 디버그 라이브러리 버전은 먼저 버퍼를 0xFE 채웁니다. 이 동작을 사용하지 않도록 설정하려면 .를 사용합니다 _CrtSetDebugFillThreshold
.
CRT에는 여러 공통 베이스에 대해 null 종결자 및 부호 문자를 포함하여 각 정수 형식의 가능한 가장 긴 값을 변환하는 데 필요한 버퍼의 크기를 정의하는 편리한 매크로가 포함되어 있습니다. 자세한 내용은 최대 변환 수 매크로를 참조 하세요.
기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.
일반 텍스트 루틴 매핑
Tchar.h 루틴 |
_UNICODE 및 _MBCS 정의되지 않음 |
정의된 _MBCS |
정의된 _UNICODE |
---|---|---|---|
_itot_s |
_itoa_s |
_itoa_s |
_itow_s |
_ltot_s |
_ltoa_s |
_ltoa_s |
_ltow_s |
_ultot_s |
_ultoa_s |
_ultoa_s |
_ultow_s |
_i64tot_s |
_i64toa_s |
_i64toa_s |
_i64tow_s |
_ui64tot_s |
_ui64toa_s |
_ui64toa_s |
_ui64tow_s |
요구 사항
루틴에서 반환된 값 | 필수 헤더 |
---|---|
_itoa_s , _ltoa_s , _ultoa_s , _i64toa_s _ui64toa_s |
<stdlib.h> |
_itow_s , _ltow_s , _ultow_s , _i64tow_s _ui64tow_s |
<stdlib.h> 또는 <wchar.h> |
이러한 함수는 Microsoft 전용입니다. 호환성에 대한 자세한 내용은 호환성을 참조하세요.
예시
이 샘플에서는 몇 가지 정수 변환 함수를 사용하는 방법을 보여 줍니다. 매크로는 _countof
배열 선언이 컴파일러에 표시될 때만 버퍼 크기를 결정하는 데만 작동하며 포인터로 감쇠된 매개 변수에는 적용되지 않습니다.
// crt_itoa_s.c
// Compile by using: cl /W4 crt_itoa_s.c
#include <stdlib.h> // for _itoa_s functions, _countof, count macro
#include <stdio.h> // for printf
#include <string.h> // for strnlen
int main( void )
{
char buffer[_MAX_U64TOSTR_BASE2_COUNT];
int r;
for ( r = 10; r >= 2; --r )
{
_itoa_s( -1, buffer, _countof(buffer), r );
printf( "base %d: %s (%d chars)\n",
r, buffer, strnlen(buffer, _countof(buffer)) );
}
printf( "\n" );
for ( r = 10; r >= 2; --r )
{
_i64toa_s( -1LL, buffer, _countof(buffer), r );
printf( "base %d: %s (%d chars)\n",
r, buffer, strnlen(buffer, _countof(buffer)) );
}
printf( "\n" );
for ( r = 10; r >= 2; --r )
{
_ui64toa_s( 0xffffffffffffffffULL, buffer, _countof(buffer), r );
printf( "base %d: %s (%d chars)\n",
r, buffer, strnlen(buffer, _countof(buffer)) );
}
}
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)