_gcvt_s
將浮點值轉換為字串。 此函式是 具有安全性增強功能的 版本_gcvt
,如CRT中的安全性功能中所述。
語法
errno_t _gcvt_s(
char *buffer,
size_t sizeInBytes,
double value,
int digits
);
template <size_t cchStr>
errno_t _gcvt_s(
char (&buffer)[cchStr],
double value,
int digits
); // C++ only
參數
buffer
儲存轉換結果的緩衝區。
sizeInBytes
緩衝區的大小。
value
要轉換的值。
digits
儲存的重要數字的數目。
傳回值
如果成功,則為零。 如果因為參數無效而發生失敗(請參閱下表中的無效值),則會叫用無效的參數處理程式,如參數驗證中所述。 如果允許繼續執行,則會傳回錯誤碼。 錯誤碼於 Errno.h 中定義。 如需這些錯誤的清單,請參閱errno
、 _doserrno
_sys_errlist
和 _sys_nerr
。
錯誤條件
buffer |
sizeInBytes |
value |
digits |
傳回 | buffer 中的值 |
---|---|---|---|---|---|
NULL |
任意 | 任意 | 任意 | EINVAL |
未修改。 |
非 NULL (指向有效的記憶體) |
零 | 任意 | 任意 | EINVAL |
未修改。 |
非 NULL (指向有效的記憶體) |
任意 | 任意 | >= sizeInBytes |
EINVAL |
未修改。 |
安全性問題
_gcvt_s
如果 buffer
未指向有效的記憶體且不是 NULL
,則可能會產生存取違規。
備註
_gcvt_s
函式會將浮點 value
轉換為字元字串 (其中包括小數點和可能的正負號位元組),並將字串儲存在 buffer
中。 buffer
應該大到足以容納轉換的值加上會自動予以附加的結束 Null 字元。 長度 _CVTBUFSIZE
的緩衝區足可供任何浮點值使用。 如果使用緩衝區大小 digits
+ 1,函式將不會覆寫緩衝區的結尾,因此請務必為這項作業提供足夠的緩衝區。 _gcvt_s
嘗試以十進位格式產生 digits
個數字。 如果無法,則會以指數格式產生 digits
數位。 可於轉換中隱藏尾端零。
C++ 中,使用這個函式已為範本多載簡化;多載可自動推斷緩衝區長度,因而不需要指定大小引數。 如需詳細資訊,請參閱安全範本多載。
此函式的偵錯版本會先將緩衝區填入0xFE。 若要停用此行為,請使用 _CrtSetDebugFillThreshold
。
根據預設,此函式的全域狀態會限定於應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。
需求
常式 | 必要的標頭 | 選擇性標頭 |
---|---|---|
_gcvt_s |
<stdlib.h> | <error.h> |
如需相容性詳細資訊,請參閱相容性。
範例
// crt_gcvt_s.c
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main()
{
char buf[_CVTBUFSIZE];
int decimal;
int sign;
int err;
err = _gcvt_s(buf, _CVTBUFSIZE, 1.2, 5);
if (err != 0)
{
printf("_gcvt_s failed with error code %d\n", err);
exit(1);
}
printf("Converted value: %s\n", buf);
}
Converted value: 1.2
另請參閱
資料轉換
數學與浮點支援
atof
、 、 _atof_l
、 _wtof
_wtof_l
_ecvt_s
_fcvt_s
_gcvt