strfromd(3)

НАИМЕНОВАНИЕ
strfromd, strfromf, strfroml - преобразуют значение с плавающей запятой в строку

БИБЛИОТЕКА
Стандартная библиотека языка C (libc, -lc)

ОБЗОР
#include <stdlib.h>

int strfromd(size_t n;
             char str[restrict n], size_t n,
             const char *restrict format, double fp);
int strfromf(size_t n;
             char str[restrict n], size_t n,
             const char *restrict format, float fp);
int strfroml(size_t n;
             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.

АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7) и разделе POSIX Safety Concepts руководства библиотеки GNU C.

Интерфейс | Атрибут | Значение
strfromd(), strfromf(), strfroml() | Безвредность в нитях | MT-Safe locale
 | Async-signal safety | AS-Unsafe heap
 | Безопасность асинхронной отмены | AC-Unsafe mem

Замечание: эти атрибуты только предварительны.

СТАНДАРТЫ
ISO/IEC TS 18661-1.

ВЕРСИИ

strfromd()
strfromf()
strfroml()
    glibc 2.25.

ПРИМЕЧАНИЯ
These functions take account of the LC_NUMERIC category of the current locale.

ПРИМЕРЫ
Преобразует значение 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 (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков (<debian-l10n-russian@lists.debian.org>).