変換を二重数値を文字列にします。Converts a double number to a string. これは、「CRT のセキュリティ機能」の説明にあるとおり、セキュリティが強化されたバージョンの _ecvt です。This is a version of _ecvt with security enhancements as described in Security Features in the CRT.


errno_t _ecvt_s(
   char * _Buffer,
   size_t _SizeInBytes,
   double _Value,
   int _Count,
   int *_Dec,
   int *_Sign
template <size_t size>
errno_t _ecvt_s(
   char (&_Buffer)[size],
   double _Value,
   int _Count,
   int *_Dec,
   int *_Sign
); // C++ only


変換の結果である数字の文字列へのポインターが格納されます。Filled with the pointer to the string of digits, the result of the conversion.

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

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

格納する桁数。Number of digits stored.

格納された小数点位置。Stored decimal-point position.

変換後の数値の符号。Sign of the converted number.

戻り値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 more information, 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_Buffer _SizeInBytes_SizeInBytes _Value_Value _Count_Count _Dec_Dec _Sign_Sign 戻り値Return value バッファー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

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


_Ecvt_s関数は、浮動小数点数を文字の文字列に変換します。The _ecvt_s function converts a floating-point number to a character string. _Valueパラメーターは変換する浮動小数点数です。The _Value parameter is the floating-point number to be converted. この関数は最大格納カウントの桁 _Valueを文字列として null 文字 ('\0') を追加します。This function stores up to count digits of _Value as a string and appends a null character ('\0'). 場合の桁数 _Valueを超える _Count下位の桁は丸められます。If the number of digits in _Value exceeds _Count, the low-order digit is rounded. も少なかった場合カウント数字、文字列が 0 で埋められます。If there are fewer than count digits, the string is padded with zeros.

文字列には数字だけが格納されます。Only digits are stored in the string. 符号、小数点の位置 _Valueから取得できます _Dec(_s) 呼び出しの後にします。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 giving the position of the decimal point with respect to the beginning of the string. 0 または負の整数値は、最初の桁の左側に小数点があることを示します。A 0 or negative integer value indicates that the decimal point lies to the left of the first digit. (_S) パラメーターは変換後の数値の符号を示す整数を指します。The _Sign parameter points to an integer that indicates the sign of the converted number. 整数値が 0 の場合、数値は正の値です。If the integer value is 0, the number is positive. それ以外の場合、数値は負の値です。Otherwise, the number is negative.

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

間の差 _ecvt_s_fcvt_sの解釈には、 _Countパラメーター。The difference between _ecvt_s and _fcvt_s is in the interpretation of the _Count parameter. _ecvt_s解釈 _Countとして、出力文字列に数字の合計数は _fcvt_s解釈 _Countの後の桁数として10 進数のポイント。_ecvt_s interprets _Count as the total number of digits in the output string, whereas _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
_ecvt_s_ecvt_s <stdlib.h><stdlib.h> <errno.h><errno.h>

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


// ecvt_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 = _ecvt_s(buf, _CVTBUFSIZE, 1.2, 5, &decimal, &sign);

    if (err != 0)
        printf("_ecvt_s failed with error code %d\n", err);

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

関連項目See also

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