Provided by: manpages-ru-dev_4.21.0-2_all 

ИМЯ
strfromd, strfromf, strfroml - преобразуют значение с плавающей запятой в строку
LIBRARY
Standard C library (libc, -lc)
СИНТАКСИС
#include <stdlib.h>
int strfromd(char str[restrict .n], size_t n,
const char *restrict format, double fp);
int strfromf(char str[restrict .n], size_t n,
const char *restrict format, float fp);
int strfroml(char str[restrict .n], size_t n,
const char *restrict format, long double fp);
Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):
strfromd(), strfromf(), strfroml():
__STDC_WANT_IEC_60559_BFP_EXT__
ОПИСАНИЕ
Данные функции преобразуют значение с плавающей запятой fp в строку символов str в соответствии со
строкой формата format. В str записывается не более n символов.
The terminating null byte ('\0') is written if and only if n is sufficiently large, otherwise the written
string is truncated at n characters.
Функции strfromd(), strfromf() и strfroml() эквивалентны
snprintf(str, n, format, fp);
не считая строки format.
Структура строки формата
The format string must start with the character '%'. This is followed by an optional precision which
starts with the period character (.), followed by an optional decimal integer. If no integer is
specified after the period character, a precision of zero is used. Finally, the format string should
have one of the conversion specifiers a, A, e, E, f, F, g, or G.
Преобразователи применяются в соответствии с типом плавающей запятой, представленным суффиксом функции. В
связи с этим, в отличии от snprintf() строка формата не содержит символа модификатора длины. Подробное
описание преобразователей смотрите в snprintf(3).
Для значений бесконечности и NaN реализация соответствует стандарту C99:
Если fp равно NaN, +NaN или -NaN и указан преобразователь f (или a, e, g), то выполняется
преобразование в «nan», «nan» или «-nan», соответственно. Если указан преобразователь F (или A, E,
G), то выполняется преобразование в «NAN» или «-NAN».
Если fp равно бесконечности, то она схожим образом преобразуется в [-]inf или [-]INF.
Некорректная строка format вызывает непредсказуемое поведение.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
The strfromd(), strfromf(), and strfroml() functions return the number of characters that would have
been written in str if n had enough space, not counting the terminating null byte. Thus, a return value
of n or greater means that the output was truncated.
ВЕРСИИ
The strfromd(), strfromf(), and strfroml() functions are available since glibc 2.25.
АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7) и разделе POSIX Safety Concepts руководства
библиотеки GNU C.
┌───────────────────────────────────────────────────────────────┬──────────────────────┬────────────────┐
│ Интерфейс │ Атрибут │ Значение │
├───────────────────────────────────────────────────────────────┼──────────────────────┼────────────────┤
│ │ Безвредность в нитях │ MT-Safe locale │
│ ├──────────────────────┼────────────────┤
│ strfromd(), strfromf(), strfroml() │ Async-signal safety │ AS-Unsafe heap │
│ ├──────────────────────┼────────────────┤
│ │ Async-cancel safety │ 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);
СМ. ТАКЖЕ
atof(3), snprintf(3), strtod(3)
ПЕРЕВОД
Русский перевод этой страницы руководства был сделан Alexander Golubev <fatzer2@gmail.com>, Azamat
Hackimov <azamat.hackimov@gmail.com>, Hotellook, Nikita <zxcvbnm3230@mail.ru>, Spiros Georgaras
<sng@hellug.gr>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов
<pavia00@gmail.com>
Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3
или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.
Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо
на man-pages-ru-talks@lists.sourceforge.net.
Linux man-pages 6.03 5 февраля 2023 г. strfromd(3)