Поделиться через


_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