_fcvt
Преобразует число с плавающей запятой в строку. Доступна более безопасная версия этой функции; см. раздел _fcvt_s
.
Синтаксис
char *_fcvt(
double value,
int count,
int *dec,
int *sign
);
Параметры
value
Число, которое требуется преобразовать.
count
Число разрядов после десятичной запятой.
dec
Указатель на сохраненную позицию десятичной запятой.
sign
Указатель на сохраненный индикатор знака.
Возвращаемое значение
_fcvt
возвращает указатель на строку цифр по NULL
ошибке.
Замечания
Функция _fcvt
преобразует число с плавающей запятой в строку, завершаемую нуль-символом. Параметр value
представляет собой преобразуемое число с плавающей запятой. Функция _fcvt
сохраняет цифры параметра value
в виде строки и добавляет нуль-символ ("\0"). Параметр count
определяет количество цифр, сохраняемых после десятичной запятой. Избыточные цифры округляются до count
знаков. Если количество цифр меньше точности count
, строка дополняется нулями.
Общее число цифр, возвращаемых _fcvt
не превышает _CVTBUFSIZE
.
В строке сохраняются только цифры. Положение десятичной запятой и знак value
можно получить из параметров dec
и sign после вызова. Параметр dec
указывает на целочисленное значение; это целочисленное значение представляет положение десятичной запятой относительно начала строки. Ноль или отрицательное целое число означают, что десятичная запятая располагается слева от первой цифры. Параметр sign
указывает на целое число, обозначающее знак величины value
. Целое число имеет значение 0, если значение value
положительное, и ненулевое значение, если значение value
отрицательное.
Различие между функциями _ecvt
и _fcvt
заключается в интерпретации параметра count
. Функция _ecvt
интерпретирует параметр count
как общее число цифр в выходной строке, а функция _fcvt
интерпретирует параметр count
как количество цифр после десятичной запятой.
_ecvt
и _fcvt
используют для преобразования один статически выделенный буфер. Каждый вызов одной из этих подпрограмм уничтожает результат предыдущего вызова.
Эта функция проверяет свои параметры. Если dec
или sign
имеет NULL
count
значение 0, вызывается обработчик недопустимых параметров, как описано в разделе "Проверка параметров". Если выполнение разрешено продолжать, errno
задано EINVAL
значение и NULL
возвращается.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Требования
Function | Обязательный заголовок |
---|---|
_fcvt |
<stdlib.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
// crt_fcvt.c
// compile with: /W3
// This program converts the constant
// 3.1415926535 to a string and sets the pointer
// buffer to point to that string.
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
int decimal, sign;
char *buffer;
double source = 3.1415926535;
buffer = _fcvt( source, 7, &decimal, &sign ); // C4996
// Note: _fcvt is deprecated; consider using _fcvt_s instead
printf( "source: %2.10f buffer: '%s' decimal: %d sign: %d\n",
source, buffer, decimal, sign );
}
source: 3.1415926535 buffer: '31415927' decimal: 1 sign: 0
См. также
Преобразование данных
Поддержка математических и плавающих точек
atof
, , _atof_l
_wtof
_wtof_l
_ecvt
_gcvt