ИМЯ
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.Интерфейс | Атрибут | Значение |
strfromd(), strfromf(), strfroml() | Безвредность в нитях | MT-Safe locale |
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 <[email protected]>, Azamat Hackimov <[email protected]>, Hotellook, Nikita <[email protected]>, Spiros Georgaras <[email protected]>, Vladislav <[email protected]>, Yuri Kozlov <[email protected]> и Иван Павлов <[email protected]> Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на [email protected]5 февраля 2023 г. | Linux man-pages 6.03 |