_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