_itoa_s, _i64toa_s, _ui64toa_s, _itow_s, _i64tow_s, _ui64tow_s
정수를 문자열로 변환 합니다.이러한 버전의 있습니다 _itoa, _i64toa, _ui64toa, _itow, _i64tow, _ui64tow 와 보안 기능 향상에 설명 된 대로 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
매개 변수
[in] value
변환할 숫자입니다.[out] buffer
변환의 결과를 입력 합니다.[in] sizeInCharacters
싱글 바이트 문자 또는 와이드 문자 버퍼의 크기입니다.[in] radix
Base of value; 범위 2–36에 있어야 합니다.
반환 값
성공 하는 경우에 0입니다. 실패 시 오류 코드입니다.다음 조건 중 하나에 적용 되는 경우 함수는 잘못 된 매개 변수 처리기의 설명에 따라 호출 매개 변수 유효성 검사.
오류 조건
value |
버퍼 |
sizeInCharacters |
기 수 |
Return |
---|---|---|---|---|
모든 |
NULL |
모든 |
모든 |
EINVAL |
모든 |
모든 |
< = 0 |
모든 |
EINVAL |
모든 |
모든 |
< = 필요한 결과 문자열의 길이 |
모든 |
EINVAL |
모든 |
모든 |
모든 |
radix< 2 or radix > 36 |
EINVAL |
보안 문제
이러한 함수 액세스 위반이 발생할 수 있습니다 buffer 올바른 메모리를 가리키지 않는 한 하지 않습니다 NULL, 버퍼의 길이 결과 문자열을 보유할 수 있을 정도로 충분히 하지 않은 경우.
설명
매개 변수 및 반환 값을 제외 하 고는 _itoa_s 함수가 있습니다 해당 덜 안전한 버전 동일한 동작입니다.
C + +에서이 함수를 사용 하 여 템플릿 오버 로드에 단순화 됩니다. 오버 로드에서 버퍼 길이가 자동으로 유추할 수 있습니다 (size 인수를 지정할 필요가 없습니다) 및 해당 보안에서 이미지와 이전, 안전 하지 않은 함수가 자동으로 바꿀 수 있습니다.자세한 내용은 보안 템플릿 오버 로드를 참조하십시오.
이 함수들은 먼저 버퍼 0xFD 입력합니다.이 동작을 해제 하려면 사용 _CrtSetDebugFillThreshold.
일반 텍스트 루틴 매핑
Tchar.h 루틴 |
_UNICODE 및 _mbcs가 정의 되지 않았습니다. |
_Mbcs가 정의 |
_Unicode가 정의 |
---|---|---|---|
_itot_s |
_itoa_s |
_itoa_s |
_itow_s |
_i64tot_s |
_i64toa_s |
_i64toa_s |
_i64tow_s |
_ui64tot_s |
_ui64toa_s |
_ui64toa_s |
_ui64tow_s |
요구 사항
루틴 |
필수 헤더 |
---|---|
_itoa_s |
<stdlib.h> |
_i64toa_s |
<stdlib.h> |
_ui64toa_s |
<stdlib.h> |
_itow_s |
<stdlib.h> 또는 <wchar.h> |
_i64tow_s |
<stdlib.h> 또는 <wchar.h> |
_ui64tow_s |
<stdlib.h> 또는 <wchar.h> |
더 많은 호환성 정보를 참조 하십시오. 호환성 소개에서 합니다.
예제
// 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)) );
}
}
Output
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)