_fcvt_s
Преобразует число с плавающей запятой в строке.Это версия _fcvt со службами расширений безопасности, как описано в разделе Средства безопасности в CRT.
errno_t _fcvt_s(
char* buffer,
size_t sizeInBytes,
double value,
int count,
int *dec,
int *sign
);
template <size_t size>
errno_t _fcvt_s(
char (&buffer)[size],
double value,
int count,
int *dec,
int *sign
); // C++ only
Параметры
[исходящий] buffer
Предоставленный буфер, в котором будет храниться результат преобразования.[входящий] sizeInBytes
Размер буфера в байтах.[входящий] value
Число для преобразования.[входящий] count
Количество цифр после десятичного знака.[исходящий] dec
Указатель к хранимому позиции десятичной запятой.[исходящий] sign
Указатель к хранимому индикатору знака.
Возвращаемое значение
Нуль, если успешно.Возвращаемое значение кода ошибки, если сбой.Коды ошибок, определенные в Errno.h.Для списка этих ошибок см. errno.
В случае недопустимого параметра, как показано в следующей таблице, эта функция вызывает обработчик недопустимого параметра, как описано в разделе Проверка параметров.Если выполнение может быть продолжено, то наборы этой функции errno В EINVAL возвращает EINVAL.
Условия возникновения ошибок
buffer |
sizeInBytes |
value |
count |
dec |
sign |
Return |
Значение в пределах buffer |
---|---|---|---|---|---|---|---|
NULL |
any |
any |
any |
any |
any |
EINVAL |
Не изменяется. |
NOT NULL (указывает на допустимый памяти) |
<=0 |
any |
any |
any |
any |
EINVAL |
Не изменяется. |
any |
any |
any |
any |
NULL |
any |
EINVAL |
Не изменяется. |
any |
any |
any |
any |
any |
NULL |
EINVAL |
Не изменяется. |
Вопросы безопасности
_fcvt_s Нарушение прав доступа, если может создать buffer не указывает на допустимый памяти и нет NULL.
Заметки
_fcvt_s функция преобразует число с плавающей запятой в null-завершенной символьную строку.value параметр число с плавающей запятой, которые требуется преобразовать._fcvt_s хранит числа value как строка и добавления нуль-символ (" \ 0 ").count параметр определяет количество разрядов, которое будет храниться после десятичной запятой.Лишние цифры округляются до count размещения.Если меньше count цифры точности, строка заполняются нулями.
Только числа хранятся в строке.Позиция десятичной запятой, а символ value может быть получен из dec и sign после вызова.dec элементы параметра в значение целого числа. это целое значение дает положение десятичной запятой относительно начала строки.Нулевое или отрицательное целое значение указывает на то, что десятичная запятая, расположенную слева от первого числа.Параметр sign указывает на целое число, указывающее знак value.Целое число имеет значение 0, если value положительное число, если и установлено в ненулевое значение value отрицательные значения.
Буфера длины _CVTBUFSIZE достаточны для любого значения с плавающей запятой.
Различие _ecvt_s и _fcvt_s в толковании count параметр._ecvt_s интерпретирует count так как общее количество цифр в выходной строке. _fcvt_s интерпретирует count как число знаков после десятичной запятой.
В C++ с помощью этой функции упрощает перегрузкой шаблона; перегрузка может определить длину буфера автоматически, устранение необходимости указывать аргумент size.Дополнительные сведения см. в разделе Предоставляйте перегруженный шаблона.
Отладочная версия этой функции сначала заполняет буфер с 0xFD.Чтобы отключить эту реакция на событие, воспользуйтесь _CrtSetDebugFillThreshold.
Требования
Функция |
Обязательный заголовок |
Необязательный заголовок |
---|---|---|
_fcvt_s |
<stdlib.h> |
<errno.h> |
Дополнительные сведения о совместимости см. Совместимость во введении.
библиотеки: все версии Функции библиотеки CRT.
Пример
// fcvt_s.c
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main()
{
char * buf = 0;
int decimal;
int sign;
int err;
buf = (char*) malloc(_CVTBUFSIZE);
err = _fcvt_s(buf, _CVTBUFSIZE, 1.2, 5, &decimal, &sign);
if (err != 0)
{
printf("_fcvt_s failed with error code %d\n", err);
exit(1);
}
printf("Converted value: %s\n", buf);
}