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

バッファーのサイズ。Size of the buffer.

変換する値。Value to be converted.

格納される有効桁数。Number of significant digits stored.

戻り値Return Value

正常終了した場合は 0 を返します。Zero if successful. 無効なパラメーターのためにエラーが発生した場合 (無効な値については次の表を参照)、「パラメーターの検証」で説明するように、無効なパラメーター ハンドラーが呼び出されます。If a failure occurs due to an invalid parameter (see the following table for invalid values), the invalid parameter handler is invoked as described in Parameter Validation. 実行を継続できる場合は、エラー コードが返されます。If execution is allowed to continue, an error code is returned. エラー コードは、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.

エラー条件Error Conditions

バッファーbuffer sizeInBytessizeInBytes valuevalue 数字digits ReturnReturn バッファーValue in buffer
NULLNULL 任意any 任意any 任意any EINVALEINVAL 変更されません。Not modified.
いないNULL (有効なメモリを指す)Not NULL (points to valid memory) ゼロzero 任意any 任意any EINVALEINVAL 変更されません。Not modified.
いないNULL (有効なメモリを指す)Not NULL (points to valid memory) 任意any 任意any >= sizeInBytes>= sizeInBytes EINVALEINVAL 変更されません。Not modified.

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

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


_Gcvt_s関数は、浮動小数点に変換を文字の文字列 (を小数点、符号バイトを含む) 内の文字列を格納およびバッファー.The _gcvt_s function converts a floating-point value to a character string (which includes a decimal point and a possible sign byte) and stores the string in buffer. バッファー変換後の値と自動的に追加される終端の null 文字を対応するために十分な大きさにする必要があります。buffer should be large enough to accommodate the converted value plus a terminating null character, which is appended automatically. 長さのバッファー _CVTBUFSIZEがにとって十分で、任意の浮動小数点値。A buffer of length _CVTBUFSIZE is sufficient for any floating point value. 場合のバッファー サイズを+ 1 が使用される、関数は、最後は上書きされません、バッファーのするようにしてこの操作のための十分なバッファーを指定します。If a buffer size of digits + 1 is used, the function will not overwrite the end of the buffer, so be sure to supply a sufficient buffer for this operation. _gcvt_sを生成しようと10 進形式の数字です。_gcvt_s attempts to produce digits digits in decimal format. 生成できない場合は、指数形式で数字。If it cannot, it produces digits digits in exponential format. 後続のゼロは、変換時に非表示にできます。Trailing zeros can be suppressed in the conversion.

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.


ルーチンによって返される値Routine 必須ヘッダーRequired header オプション ヘッダーOptional header
_gcvt_s_gcvt_s <stdlib.h><stdlib.h> <error.h><error.h>

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


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

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

関連項目See also

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