_gcvt
将浮点值转换为字符串,它在缓冲存储区。 此功能的一种较为安全的版本可用; _gcvt_s参见。
char *_gcvt(
double value,
int digits,
char *buffer
);
参数
value
要转换的值。digits
存储的有效位数。buffer
结果的存储位置。
返回值
_gcvt 返回指向数字字符串。
备注
_gcvt 函数将浮点 value 为包括小数点和一个可能的符号字节) 的字符字符串 (并存储在 buffer的字符串。 buffer 应足以容纳转换的值以及一个 null 字符),自动追加。 如果 + 1 使用 digits 的缓冲区大小,该函数复盖缓冲区末尾的。 这是因为,该转换的字符串包括小数点可以包含符号和指数信息。 未向溢出的提供。 _gcvt 会尝试生成 digits 数字以十进制格式。 如果不能,它导致 digits 数字以指数格式。 显示尾随零可能在转换过程中被取消。
长度 _CVTBUFSIZEbuffer 为所有浮点值就足够了。
此功能验证其参数。 如果 buffer 是 NULL,无效参数调用处理程序,如 参数验证所述。 如果执行允许继续,此功能设置 errno 到 EINVAL 并返回 NULL。
要求
实例 |
必需的头 |
---|---|
_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) );
}