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