_gcvt
浮動小数点数を文字列に変換し、文字列をバッファーに格納します。 この関数のセキュリティが強化されたバージョンについては、「_gcvt_s」を参照してください。
char *_gcvt(
double value,
int digits,
char *buffer
);
パラメーター
value
変換される数値。digits
格納する有効数字の桁数。buffer
結果の格納場所。
戻り値
_gcvt は、数字の文字列へのポインターを返します。
解説
_gcvt 関数は、浮動小数点数の value を文字列 (小数点、場合によっては符号バイトも含む) に変換し、その文字列を buffer に格納します。 buffer は、変換された値に加え、自動的に追加される終端の NULL 文字を格納できるような大きさにする必要があります。 digits + 1 のバッファー サイズを使用する場合、バッファーの末尾は上書きされます。 これは、変換後の文字列が小数点を含み、場合によっては符号と指数部も含むことがあるためです。 オーバーフローについては、対応していません。 _gcvt 関数は、digits 桁を小数形式で生成しようとします。 生成できない場合は、digits 桁を指数形式で生成します。 後続のゼロは、変換時に生成されない場合があります。
長さが _CVTBUFSIZE の buffer は、すべての浮動小数点値に対応します。
この関数は、パラメーターを検証します。 buffer が NULL の場合は、「パラメーターの検証」に説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、この関数は errno を EINVAL に設定し、NULL を返します。
必要条件
ルーチン |
必須ヘッダー |
---|---|
_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) );
}