_gcvt
Converts a floating-point value to a string, which it stores in a buffer.
char *_gcvt( double value, int digits, char *buffer );
Parameters
- value
- Value to be converted.
- digits
- Number of significant digits stored.
- buffer
- Storage location for result.
Return Value
_gcvt returns a pointer to the string of digits. There is no error return.
Remarks
The _gcvt 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. The buffer should be large enough to accommodate the converted value plus a terminating null character, which is appended automatically. If a buffer size of digits + 1 is used, the function overwrites the end of the buffer. This is because the converted string includes a decimal point and can contain sign and exponent information. There is no provision for overflow. _gcvt attempts to produce digits digits in decimal format. If it cannot, it produces digits digits in exponential format. Trailing zeros may be suppressed in the conversion.
A buffer of length _CVTBUFSIZE is sufficient for any floating point value.
Requirements
| Routine | Required header | Compatibility |
|---|---|---|
| _gcvt | <stdlib.h> | Win 98, Win Me, Win NT, Win 2000, Win XP |
For additional compatibility information, see Compatibility in the Introduction.
Libraries
All versions of the C run-time libraries.
Example
// crt_gcvt.c
#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 );
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value *= 10;
_gcvt( value, 12, buffer );
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value *= 10;
_gcvt( value, 12, buffer );
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value *= 10;
_gcvt( value, 12, buffer );
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
printf( "\n" );
value = -12.34567890123;
_gcvt( value, 12, buffer );
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value /= 10;
_gcvt( value, 12, buffer );
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value /= 10;
_gcvt( value, 12, buffer );
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value /= 10;
_gcvt( value, 12, buffer );
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
}
Output
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)
See Also
Data Conversion Routines | Floating-Point Support Routines | atof | _ecvt | _fcvt | Run-Time Routines and .NET Framework Equivalents