_ecvt_s
Преобразование a double номер строки.это версия _ecvt со службами расширений безопасности, как описано в разделе Средства безопасности в CRT.
errno_t _ecvt_s(
char * _Buffer,
size_t _SizeInBytes,
double _Value,
int _Count,
int *_Dec,
int *_Sign
);
template <size_t size>
errno_t _ecvt_s(
char (&_Buffer)[size],
double _Value,
int _Count,
int *_Dec,
int *_Sign
); // C++ only
Параметры
[исходящий] _Buffer
Заполнено с указателем на строку знаков, результат преобразования.[входящий] _SizeInBytes
Размер буфера в байтах.[входящий] _Value
Число для преобразования.[входящий] _Count
Количество цифр, которые хранятся.[исходящий] _Dec
Магазины позиция десятичной запятой.[исходящий] _Sign
Символ преобразованного числа.
Возвращаемое значение
Нуль, если успешно.Возвращаемое значение кода ошибки, если сбой.Коды ошибок, определенные в Errno.h.Дополнительные сведения см. в разделе errno, _doserrno, _sys_errlist и _sys_nerr.
В случае недопустимого параметра, как показано в следующей таблице, эта функция вызывает обработчик недопустимого параметра, как описано в разделе Проверка параметров.Если выполнение может быть продолжено, то наборы этой функции errno В EINVAL возвращает EINVAL.
Условия возникновения ошибок
_Buffer |
_SizeInBytes |
_Value |
_Count |
_Dec |
_Sign |
Возвращаемое значение |
Значение в пределах 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 |
Не изменяется. |
Вопросы безопасности
_ecvt_s Нарушение прав доступа, если может создать buffer не указывает на допустимый памяти и нет NULL.
Заметки
_ecvt_s функция преобразует число с плавающей запятой в командную строку._Value параметр число с плавающей запятой, которые требуется преобразовать.Эта функция хранит значение count числа _Value как строка и добавления нуль-символ (" \ 0 ").Если количество знаков в пределах _Value превышает _Count- младший число округляется.Если меньше count числа, строки заполняются нулями.
Только числа хранятся в строке.Позиция десятичной запятой, а символ _Value может быть получен из _Dec и _Sign после вызова._Dec указатель на значение параметра, задающего десятичной запятой целого числа позицию относительно начала строки.0 Или отрицательное целое значение указывает на то, что десятичная запятая, расположенную слева от первого числа._Sign элементы параметра целое число, которое указывает знак преобразованного числа.Если целое значение 0, то число является положительным.В противном случае - число является отрицательным.
Буфера длины _CVTBUFSIZE недостаточно для любого значения с плавающей запятой.
различие _ecvt_s и _fcvt_s в толковании _Count параметр._ecvt_s интерпретирует _Count так как общее количество цифр в выходной строке, тогда как _fcvt_s интерпретирует _Count как число знаков после десятичной запятой.
В C++ с помощью этой функции упрощает перегрузкой шаблона; перегрузка может определить длину буфера автоматически, устранение необходимости указывать аргумент size.Дополнительные сведения см. в разделе Предоставляйте перегруженный шаблона.
Отладочная версия этой функции сначала заполняет буфер с 0xFD.Чтобы отключить эту реакция на событие, воспользуйтесь _CrtSetDebugFillThreshold.
Требования
Функция |
Обязательный заголовок |
Необязательный заголовок |
---|---|---|
_ecvt_s |
<stdlib.h> |
<errno.h> |
Дополнительные сведения о совместимости см. Совместимость во введении.
Пример
// ecvt_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 = _ecvt_s(buf, _CVTBUFSIZE, 1.2, 5, &decimal, &sign);
if (err != 0)
{
printf("_ecvt_s failed with error code %d\n", err);
exit(1);
}
printf("Converted value: %s\n", buf);
}