共用方式為


_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

參數

  • [out] buffer
    儲存轉換結果的緩衝區。

  • [in] sizeInBytes
    緩衝區的大小。

  • [in] value
    要轉換的值。

  • [in] digits
    儲存的有效位數。

傳回值

如果成功,則為零。 如果因為無效的參數 (關於無效值請參閱下表) 導致失敗,無效參數處理常式會被調用,如 參數驗證 所述。 如果允許繼續執行會回傳一個錯誤碼。 錯誤碼在 Errno.h 中定義。 如需這些錯誤的清單,請參閱 errno、 _doserrno、 _sys_errlist 和 _sys_nerr

錯誤情況

buffer

sizeInBytes

value

digits

Return

在 buffer 的值

NULL

any

any

any

EINVAL

未修改。

不是 NULL (指向有效的記憶體)

any

any

EINVAL

未修改。

不是 NULL (指向有效的記憶體)

any

any

>= sizeInBytes

EINVAL

未修改。

安全性問題

如果 buffer 沒有指向有效的記憶體且不是 NULL , _gcvt_s 會發生存取被拒。

備註

_gcvt_s 函式轉換浮點數 value 為一個字元字串 (包含小數點和可能的正負號位元組) 並將字串儲存於 buffer 。 buffer 必須足以容納轉換後的值加上末尾的空字元,空字元會被自動加入。 足夠容納任何浮點數值的 _CVTBUFSIZE 長度的緩衝區。 如果使用了 digits + 1 大小的緩衝區,函式將不會覆寫緩衝區的末尾,所以請確認為此操作提供了足夠的緩衝區。 _gcvt_s 嘗試在十進位下產生 digits 位數。 如果不行,它將以指數格式產生 digits 位數。 末尾的零可以在轉換中被隱藏。

在 C++ 中,此函式的使用被簡化為使用樣板多載。使用多載可以自動推斷緩衝區的大小而不必在參數中指明大小。 如需詳細資訊,請參閱安全範本多載

此函式的偵錯版本會先將緩衝區填入 0xFD 。 若要停用此行為,請使用 _CrtSetDebugFillThreshold

需求

程序

必要的標頭檔

選擇性標頭

_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);  
  
}
  

.NET Framework 對等用法

ToString

請參閱

參考

資料轉換

浮點支援

atof、 _atof_l、 _wtof、 _wtof_l

_ecvt_s

_fcvt_s

_gcvt