_gcvt

将浮点值转换为字符串,并将其存储在缓冲区中。 此函数有一个更安全的版本;请参阅 _gcvt_s

语法

char *_gcvt(
   double value,
   int digits,
   char *buffer
);

参数

value
要转换的值。

digits
存储的有效位数。

buffer
结果的存储位置。

返回值

_gcvt 返回指向数字字符串的指针。

备注

_gcvt 函数将浮点 value 转换为字符串(它包括小数点和可能的登录字节),并将字符串存储在 buffer 中。 buffer 应足够大以容纳转换后的值加上一个会自动追加的端接空字符。 如果已使用 digits + 1 的缓冲区大小,该函数将覆盖缓冲区的末尾。 由于转换后的字符串包含小数点,并且可包含符号和指数信息,所以会发生覆盖。 该函数不考虑溢出。 _gcvt 尝试生成十进制格式的 digits 数字。 如果不能,它会生成指数格式的 digits 数字。 在转换过程中,可以取消零结尾。

_CVTBUFSIZEbuffer 长度足以满足任何浮点值。

此函数验证其参数。 如果 bufferNULL,则会调用无效的参数处理程序,如参数验证中所述。 如果允许执行继续,则该函数将 errno 设置为 EINVAL 并返回 NULL

默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态

要求

例程 必需的标头
_gcvt <stdlib.h>

有关兼容性的详细信息,请参阅 兼容性

示例

// 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) );
}
The following numbers were converted by _gcvt(value,12,buffer):
buffer: '-1234567890.12' (14 chars)
buffer: '-12345678901.2' (14 chars)
buffer: '-123456789012' (13 chars)
buffer: '-1.23456789012e+012' (19 chars)

buffer: '-12.3456789012' (14 chars)
buffer: '-1.23456789012' (14 chars)
buffer: '-0.123456789012' (15 chars)
buffer: '-1.23456789012e-002' (19 chars)

另请参阅

数据转换
数学和浮点支持
atof_atof_l_wtof_wtof_l
_ecvt
_fcvt