_ecvt_s
변환 된 double 문자열에 숫자입니다.이것은 버전입니다 _ecvt 에 설명 된 대로 보안 향상 기능을 CRT의 보안 기능.
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
매개 변수
[out] _Buffer
변환의 결과 문자열의 자릿수를에 대 한 포인터를 사용 하 여 입력 합니다.[in] _SizeInBytes
버퍼의 크기 (바이트)에서입니다.[in] _Value
변환할 숫자입니다.[in] _Count
저장 된 자릿수입니다.[out] _Dec
소수점 위치에 저장 합니다.[out] _Sign
변환 된 숫자의 기호입니다.
반환 값
성공 하는 경우에 0입니다.실패 하면 반환 값은 오류 코드입니다.오류 코드는 errno.h에 정의 됩니다.자세한 내용은 errno, _doserrno, _sys_errlist, _sys_nerr를 참조하십시오.
잘못 된 매개 변수는 다음 표에 나열 된이 함수가 잘못 된 매개 변수 처리기의 설명에 따라 호출 매개 변수 유효성 검사.실행을 계속 수 있으면이 함수는 설정 errno 에 EINVAL 를 반환 하 고 EINVAL.
오류 조건
_Buffer |
_SizeInBytes |
_Value |
_Count |
_Dec |
_Sign |
반환 값 |
값buffer |
---|---|---|---|---|---|---|---|
NULL |
모든 |
모든 |
모든 |
모든 |
모든 |
EINVAL |
수정 되지 않았습니다. |
않은 NULL (올바른 메모리를 가리키는) |
< = 0 |
모든 |
모든 |
모든 |
모든 |
EINVAL |
수정 되지 않았습니다. |
모든 |
모든 |
모든 |
모든 |
NULL |
모든 |
EINVAL |
수정 되지 않았습니다. |
모든 |
모든 |
모든 |
모든 |
모든 |
NULL |
EINVAL |
수정 되지 않았습니다. |
보안 문제
_ecvt_s경우에 액세스 위반이 발생할 수 있습니다 buffer 올바른 메모리를 가리키지 않는 한 하지 않습니다 NULL.
설명
_ecvt_s 함수는 문자열을 부동 소수점 숫자로 변환 합니다._Value 매개 변수는 변환 하는 부동 소수점 숫자입니다.이 함수를 최대 저장 count 의 자리 _Value 문자열로 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 + +에서이 함수를 사용 하는 템플릿 오버 로드에서 단순화 됩니다. 오버 로드 버퍼 길이 size 인수를 지정 하지 않아도 자동으로 유추할 수 있습니다.자세한 내용은 보안 템플릿 오버 로드를 참조하십시오.
이 함수의 디버그 버전을 먼저 버퍼 0xFD 채웁니다.이 동작을 해제 하려면 사용 _CrtSetDebugFillThreshold.
요구 사항
Function |
필수 헤더 |
선택적 헤더 |
---|---|---|
_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);
}