_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
參數
buffer
填入轉換結果的位數字串指標。
sizeInBytes
以位元組為單位的 緩衝區大小。
value
要轉換的數字。
count
儲存的位數。
dec
儲存的小數點位置。
sign
已轉換數字的正負號。
傳回值
如果成功,則為零。 如果失敗,傳回的值會是錯誤碼。 錯誤碼於 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
個位數,則以零填補字串。
字串中只能儲存數字。 呼叫之後,可從 dec
和 sign
取得小數點位置和 value
的正負號。 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