Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Преобразует значение с плавающей запятой в строку и сохраняет ее в буфер. Доступна более безопасная версия этой функции; см. раздел _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