STRFROMD(3) | Руководство программиста Linux | STRFROMD(3) |
strfromd, strfromf, strfroml - преобразуют значение с плавающей запятой в строку
#include <stdlib.h>
int strfromd(char *restrict str, size_t n, const char *restrict format, double fp); int strfromf(char *restrict str, size_t n, const char *restrict format, float fp); int strfroml(char *restrict str, size_t n, const char *restrict format, long double fp);
Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):
strfromd(), strfromf(), strfroml():
Данные функции преобразуют значение с плавающей запятой fp в строку символов str в соответствии со строкой формата format. В str записывается не более n символов.
Конечный символ null ('\0') записывается только, если n достаточно велико; в противном случае записываемая строка обрезается до n символов.
Функции strfromd(), strfromf() и strfroml() эквивалентны
snprintf(str, n, format, fp);
не считая строки format.
Строка format должна начинаться с символа '%'. За ним следует необязательное значение точности, состоящее из символа точки (.) и необязательного десятичного числа. Если число не указано, то используется точность ноль. В конце строка формата должна содержать один из преобразователей: a, A, e, E, f, F, g или G.
Преобразователи применяются в соответствии с типом плавающей запятой, представленным суффиксом функции. В связи с этим, в отличии от snprintf() строка формата не содержит символа модификатора длины. Подробное описание преобразователей смотрите в snprintf(3).
Для значений бесконечности и NaN реализация соответствует стандарту C99:
Если fp равно бесконечности, то она схожим образом преобразуется в [-]inf или [-]INF.
Некорректная строка format вызывает непредсказуемое поведение.
Функции strfromd(), strfromf() и strfroml() возвращают количество символов, которое было бы записано в str, если был n было бы достаточно большим, без учёта конечного символа null. То есть если было возвращено значение n или больше, то это указывает на то, что результат был обрезан.
Функции strfromd(), strfromf() и strfroml() доступны в glibc начиная с версии 2.25.
Описание терминов данного раздела смотрите в attributes(7) и разделе POSIX Safety Concepts руководства библиотеки GNU C.
Интерфейс | Атрибут | Значение |
strfromd(), strfromf(), strfroml() | Безвредность в нитях | MT-Safe locale |
Безопасность в асинхронных сигналах | AS-Unsafe heap | |
Безопасность в асинхронной отмене | AC-Unsafe mem |
Замечание: эти атрибуты только предварительны.
C99, ISO/IEC TS 18661-1.
Функции strfromd(), strfromf() и strfroml() учитывают категорию LC_NUMERIC текущей локали.
Преобразует значение 12.1 с типом float в строку используя десятичное написание, равную «12.100000»:
#define __STDC_WANT_IEC_60559_BFP_EXT__ #include <stdlib.h> int ssize = 10; char s[ssize]; strfromf(s, ssize, "%f", 12.1);
Преобразует значение 12.3456 с типом float в строку используя десятичное написание с двумя цифрами точности, равную «12.35»:
#define __STDC_WANT_IEC_60559_BFP_EXT__ #include <stdlib.h> int ssize = 10; char s[ssize]; strfromf(s, ssize, "%.2f", 12.3456);
Преобразует значение 12.345e19 с типом double в строку используя научное написание с нулевой точностью, равную «1E+20»:
#define __STDC_WANT_IEC_60559_BFP_EXT__ #include <stdlib.h> int ssize = 10; char s[ssize]; strfromd(s, ssize, "%.E", 12.345e19);
2019-03-06 | GNU |