浮動小数点数を文字列に変換します。Converts a floating-point number to a string. これは、「CRT のセキュリティ機能」の説明にあるとおり、セキュリティが強化されたバージョンの _fcvt です。This is a version of _fcvt with security enhancements as described in Security Features in the 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


変換の結果を保持する指定されたバッファー。The supplied buffer that will hold the result of the conversion.

バッファーのサイズ (バイト単位)。The size of the buffer in bytes.

変換される数値。Number to be converted.

小数点以下の桁数。Number of digits after the decimal point.

格納された小数点位置を指すポインター。Pointer to the stored decimal-point position.

格納された符号インジケーターを指すポインター。Pointer to the stored sign indicator.

戻り値Return Value

正常終了した場合は 0。Zero if successful. 障害が発生した場合、戻り値はエラー コードを示します。The return value is an error code if there is a failure. エラー コードは、Errno.h で定義されています。Error codes are defined in Errno.h. これらのエラーの一覧については、「errno、_doserrno、_sys_errlist、および _sys_nerr」を参照してください。For a listing of these errors, see errno, _doserrno, _sys_errlist, and _sys_nerr.

パラメーターが次の表の無効な値の場合は、「パラメーターの検証」で説明されているように、この関数は無効なパラメーター ハンドラーを呼び出します。In the case of an invalid parameter, as listed in the following table, this function invokes the invalid parameter handler, as described in Parameter Validation. 実行の継続が許可された場合に、この関数が設定errnoEINVAL返しますEINVALします。If execution is allowed to continue, this function sets errno to EINVAL and returns EINVAL.

エラー条件Error Conditions

バッファーbuffer sizeInBytessizeInBytes value countcount decdec signsign ReturnReturn バッファーValue in buffer
NULLNULL 任意any 任意any 任意any 任意any 任意any EINVALEINVAL 変更されません。Not modified.
いないNULL (有効なメモリを指す)Not NULL (points to valid memory) <=0<=0 任意any 任意any 任意any 任意any EINVALEINVAL 変更されません。Not modified.
任意any 任意any 任意any 任意any NULLNULL 任意any EINVALEINVAL 変更されません。Not modified.
任意any 任意any 任意any 任意any 任意any NULLNULL EINVALEINVAL 変更されません。Not modified.

セキュリティ上の問題Security Issues

_fcvt_s場合、アクセス違反を生成する可能性がありますバッファーが有効なメモリを指していないとがNULLします。_fcvt_s might generate an access violation if buffer does not point to valid memory and is not NULL.


_Fcvt_s関数は、浮動小数点数を文字の null で終わる文字列に変換します。The _fcvt_s function converts a floating-point number to a null-terminated character string. パラメーターは変換する浮動小数点数です。The value parameter is the floating-point number to be converted. _fcvt_sの桁を格納を文字列として null 文字 ('\0') を追加します。_fcvt_s stores the digits of value as a string and appends a null character ('\0'). カウントパラメーターは、小数点より後に格納される桁数を指定します。The count parameter specifies the number of digits to be stored after the decimal point. 余分な桁は丸めカウントを配置します。Excess digits are rounded off to count places. も少なかった場合カウント桁の文字列、有効桁数が 0 で埋められます。If there are fewer than count digits of precision, the string is padded with zeros.

文字列には数字だけが格納されます。Only digits are stored in the string. 符号、小数点の位置から取得できますdecサインオン呼び出しの後にします。The position of the decimal point and the sign of value can be obtained from dec and sign after the call. Decパラメーターが指す整数値です。 この整数値では、文字列の先頭に対する小数点の位置。The dec parameter points to an integer value; this integer value gives the position of the decimal point with respect to the beginning of the string. 0 または負の整数値は、小数点が文字列の先頭より左にあることを示します。A zero or negative integer value indicates that the decimal point lies to the left of the first digit. パラメーターサインオンの符号を示す整数を指すします。The parameter sign points to an integer indicating the sign of value. 場合、整数は 0 に設定されてが正の値および数値の場合は 0 以外の値に設定されているが負の値。The integer is set to 0 if value is positive and is set to a nonzero number if value is negative.

長さのバッファー _CVTBUFSIZEがにとって十分で、任意の浮動小数点値。A buffer of length _CVTBUFSIZE is sufficient for any floating point value.

間の差 _ecvt_s_fcvt_sの解釈には、カウントパラメーター。The difference between _ecvt_s and _fcvt_s is in the interpretation of the count parameter. _ecvt_s解釈カウントとして、出力文字列に数字の合計数と _fcvt_s解釈カウントの後の桁数として、小数点 10 進数。_ecvt_s interprets count as the total number of digits in the output string, and _fcvt_s interprets count as the number of digits after the decimal point.

C++ では、テンプレートのオーバーロードによってこの関数を簡単に使用できます。オーバーロードでは、バッファー長を自動的に推論できるため、サイズ引数を指定する必要がなくなります。In C++, using this function is simplified by a template overload; the overload can infer buffer length automatically, eliminating the need to specify a size argument. 詳細については、「 Secure Template Overloads」を参照してください。For more information, see Secure Template Overloads.

この関数のデバッグ バージョンは、最初にバッファーを 0xFD で埋めます。The debug version of this function first fills the buffer with 0xFD. この動作を無効にするには、_CrtSetDebugFillThreshold.を使用します。To disable this behavior, use _CrtSetDebugFillThreshold.


関数Function 必須ヘッダーRequired header オプション ヘッダーOptional header
_fcvt_s_fcvt_s <stdlib.h><stdlib.h> <errno.h><errno.h>

互換性の詳細については、「 互換性」を参照してください。For more compatibility information, see Compatibility.

ライブラリ: すべてのバージョン、 CRT ライブラリの機能します。Libraries: All versions of the CRT Library Features.


// 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);

    printf("Converted value: %s\n", buf);
Converted value: 120000

関連項目See also

データ変換Data Conversion
浮動小数点サポートFloating-Point Support
atof、_atof_l、_wtof、_wtof_latof, _atof_l, _wtof, _wtof_l