_ecvt_s
double
숫자를 문자열로 변환합니다. 이 함수는 CRT의 _ecvt
보안 기능에 설명된 대로 보안 기능이 향상된 버전입니다.
구문
errno_t _ecvt_s(
char * buffer,
size_t sizeInBytes,
double value,
int count,
int *dec,
int *sign
);
template <size_t size>
errno_t _ecvt_s(
char (&buffer)[size],
double value,
int count,
int *dec,
int *sign
); // C++ only
매개 변수
buffer
변환의 결과인 숫자 문자열에 대한 포인터로 채워집니다.
sizeInBytes
버퍼의 크기(바이트)입니다.
value
변환할 숫자입니다.
count
저장된 자릿수입니다.
dec
저장된 소수점 위치입니다.
sign
변환된 숫자의 부호입니다.
반환 값
정상적으로 실행되는 경우 0입니다. 오류가 있는 경우 반환 값은 오류 코드입니다. 오류 코드는 Errno.h에서 정의됩니다. 자세한 내용은 다음을 참조하세요.errno
, _doserrno
, _sys_errlist
및 _sys_nerr
.
다음 표에 나열된 대로 잘못된 매개 변수가 있는 경우 이 함수는 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기를 호출합니다. 실행을 계속하도록 허용된 경우 이 함수는 로 EINVAL
설정하고 errno
반환합니다EINVAL
.
오류 조건
buffer |
sizeInBytes |
value |
count |
dec |
sign |
반환 값 | buffer 의 값 |
---|---|---|---|---|---|---|---|
NULL |
any | any | any | any | any | EINVAL |
수정되지 않습니다. |
NULL 아님(유효한 메모리를 가리킴) |
<=0 | any | any | any | any | EINVAL |
수정되지 않습니다. |
any | any | any | any | NULL |
any | EINVAL |
수정되지 않습니다. |
any | any | any | any | any | NULL |
EINVAL |
수정되지 않습니다. |
보안 문제
_ecvt_s
유효한 메모리NULL
를 가리키지 않고 그렇지 않은 경우 buffer
액세스 위반이 발생할 수 있습니다.
설명
_ecvt_s
함수는 부동 소수점 숫자를 문자열로 변환합니다. value
매개 변수는 변환할 부동 소수점 숫자입니다. 이 함수는 value
중 최대 count
개의 숫자를 문자열로 저장하고 null 문자('\0')를 추가합니다. value
의 숫자 개수가 count
개를 초과하면 낮은 자리 숫자가 반올림됩니다. 숫자가 count
개보다 적으면 문자열이 0으로 채워집니다.
숫자만 문자열에 저장됩니다. 소수점 위치와 value
의 부호는 호출 후에 dec
및 sign
에서 얻을 수 있습니다. dec
매개 변수는 문자열의 시작을 기준으로 소수점의 위치를 제공하는 정수 값을 가리킵니다. 0 또는 음의 정수 값은 소수점이 첫 번째 숫자의 왼쪽에 있다는 것을 나타냅니다. sign
매개 변수는 변환된 숫자의 부호를 나타내는 정수를 가리킵니다. 정수 값이 0이면 숫자가 양수입니다. 그렇지 않으면 숫자가 음수입니다.
모든 부동 소수점 값에는 _CVTBUFSIZE
길이의 버퍼로 충분합니다.
_ecvt_s
와 _fcvt_s
의 차이는 count
매개 변수의 해석에 있습니다. _ecvt_s
는 count
를 출력 문자열의 전체 숫자 개수로 해석하는 반면, _fcvt_s
는 count
를 소수점 뒤의 자릿수로 해석합니다.
C++에서는 템플릿 오버로드로 인해 이 함수를 사용하는 것이 보다 간단해 집니다. 오버로드는 버퍼 길이를 자동으로 유추할 수 있으므로 크기 인수를 지정할 필요가 없습니다. 자세한 내용은 안전한 템플릿 오버로드를 참조하세요.
이 함수의 디버그 버전은 먼저 버퍼를 0xFE 채웁니다. 이 동작을 사용하지 않도록 설정하려면 .를 사용합니다 _CrtSetDebugFillThreshold
.
기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.
요구 사항
함수 | 필수 헤더 | 선택적 헤더 |
---|---|---|
_ecvt_s |
<stdlib.h> | <errno.h> |
호환성에 대한 자세한 내용은 호환성을 참조하세요.
예시
// ecvt_s.c
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main( )
{
char * buf = 0;
int decimal;
int sign;
int err;
buf = (char*) malloc(_CVTBUFSIZE);
err = _ecvt_s(buf, _CVTBUFSIZE, 1.2, 5, &decimal, &sign);
if (err != 0)
{
printf("_ecvt_s failed with error code %d\n", err);
exit(1);
}
printf("Converted value: %s\n", buf);
}
Converted value: 12000
참고 항목
데이터 변환
수학 및 부동 소수점 지원
atof
, _atof_l
, _wtof
_wtof_l
_ecvt
_fcvt_s
_gcvt_s