Share via


_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,則以零填補字串。

字串中只能儲存數字。 呼叫之後,可從 decsign 取得小數點位置和 value 的正負號。 dec 參數指向整數值,此整數值會提供字串開頭的小數點位置。 零或負整數值表示小數點位於第一位數字的左邊。 參數 sign 指向表示 value 正負號的整數。 如果 value 是正值,則整數設定為 0;如果 value 是負值,則整數設定為非零的數字。

長度 _CVTBUFSIZE 的緩衝區足可供任何浮點值使用。

_ecvt_s_fcvt_s 之間的差異位於 count 參數解譯中。 _ecvt_scount解譯為輸出字串中的位數總數,並 _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