_gcvt
バッファーに格納された文字列に浮動小数点値に変換します。この関数のセキュリティを強化したバージョンがあります。; _gcvt_s を参照してください。
char *_gcvt(
double value,
int digits,
char *buffer
);
パラメーター
value
変換される数値。digits
格納されている有効桁数。buffer
結果の格納場所。
戻り値
_gcvt は数字の文字列へのポインターを返します。
解説
_gcvt の関数 (小数点記号とそれに対応するのバイトを含む) に浮動小数点 value を文字列に変換しbuffer で文字列を格納します。buffer に自動的に追加されます。終端の null 文字に変換後の値を格納するのに十分な大きさが必要です。digits のバッファー サイズが + 1 を使用すると関数はバッファーの末尾を超えています。これは変換される文字列に小数点が含まれ符号と指数部の情報を格納できるためです。オーバーフローをプロビジョニングはありません。_gcvt は 10 進形式で digits の数字が生成されます。は指数形式の digits の数字を生成します。後続のゼロは変換に使用されることがあります。
長さ _CVTBUFSIZE の buffer は浮動小数点値に対して十分です。
この関数は、パラメーターを検証します。buffer が NULL の場合は、「パラメーターの検証」に説明されているように、無効なパラメーター ハンドラーが呼び出されます。実行の継続が許可された場合関数のセット errno は NULL を返しEINVALこの。
必要条件
ルーチン |
必須ヘッダー |
---|---|
_gcvt |
<stdlib.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
// crt_gcvt.c
// compile with: /W3
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main( void )
{
char buffer[_CVTBUFSIZE];
double value = -1234567890.123;
printf( "The following numbers were converted by _gcvt(value,12,buffer):\n" );
_gcvt( value, 12, buffer ); // C4996
// Note: _gcvt is deprecated; consider using _gcvt_s instead
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value *= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value *= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value *= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
printf( "\n" );
value = -12.34567890123;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value /= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value /= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value /= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
}