_gcvt
Преобразует значение с плавающей запятой в строку и сохраняет ее в буфер. Доступна более безопасная версия этой функции; см. раздел _gcvt_s
.
Синтаксис
char *_gcvt(
double value,
int digits,
char *buffer
);
Параметры
value
Преобразуемое значение.
digits
Количество значащих цифр хранятся.
buffer
Место хранения результата.
Возвращаемое значение
_gcvt
возвращает указатель на строку разрядов.
Замечания
Функция _gcvt
преобразует значение с плавающей запятой value
в строку символов (включает знак десятичной запятой и при необходимости байт знака) и сохраняет эту строку в buffer
. Длина buffer
должна быть достаточной для хранения преобразованного значения, а также автоматически добавляемого нуль-символа. Если размер буфера равен digits
+ 1, функция перезаписывает конец буфера. Перезапись происходит, так как преобразованная строка включает десятичную точку, а также может содержать сведения о знаке и экспоненте. Функция не учитывает переполнение. Функция _gcvt
пытается создать digits
разрядов в десятичном формате. Если он не удается, он создает digits
цифры в экспоненциальном формате. Нули в конце могут исключаться из преобразования.
Буфер buffer
длиной _CVTBUFSIZE
достаточен для любого значения с плавающей запятой.
Эта функция проверяет свои параметры. В противном buffer
NULL
случае вызывается недопустимый обработчик параметров, как описано в разделе "Проверка параметров". Если выполнение может быть продолжено, эта функция задает для 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