_fcvt_s
將浮點數轉換為字串。 此函式是的版本_fcvt
,具有CRT中安全性功能中所述的安全性增強功能。
語法
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
預存正負號指標的指標。
傳回值
如果成功,則為零。 如果失敗,傳回的值會是錯誤碼。 錯誤碼定義於 中 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 |
未修改。 |
安全性問題
_fcvt_s
如果 buffer
未指向有效的記憶體且不是 NULL
,則可能會產生存取違規。
備註
_fcvt_s
函式會將浮點數轉換成以 Null 結束的字元字串。 value
參數是要轉換的浮點數。 _fcvt_s
會將 value
的數字儲存為字串,並在結尾處附加 Null 字元 ('\0')。 count
參數會指定小數點後要儲存的位數。 多餘的數字會四捨五入至 count
位置。 如果有效位數少於 count
,則以零填補字串。
字串中只能儲存數字。 呼叫之後,可從 dec
和 sign
取得小數點位置和 value
的正負號。 dec
參數指向整數值,此整數值會提供字串開頭的小數點位置。 零或負整數值表示小數點位於第一位數字的左邊。 參數 sign
指向表示 value
正負號的整數。 如果 value
是正值,則整數設定為 0;如果 value
是負值,則整數設定為非零的數字。
長度 _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