STRFROMD - Linux手册页

时间:2019-08-20 18:01:24  来源:igfitidea点击:

Linux程序员手册 第3部分
更新日期: 2019-03-06

名称

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():

__STDC_WANT_IEC_60559_BFP_EXT__

说明

这些函数将浮点值fp转换为带有可配置格式字符串的字符串str。最多n个字符存储在str中。

当且仅当n足够大时,才写入终止的空字节('\ 0'),否则写入的字符串将被截断为n个字符。

strfromd(),strfromf()和strfroml()函数等效于

snprintf(str, n, format, fp);

除了格式字符串。

Format of the format string

格式字符串必须以字符aq%aq开头。其后是可选的精度,该精度以句点字符(。)开头,后跟可选的十进制整数。如果在句点字符后未指定整数,则使用零精度。最后,格式字符串应具有转换说明符aaeeff,g或G之一。

基于函数后缀指示的浮点类型应用转换说明符。因此,与snprintf()不同,格式字符串没有长度修饰符。有关这些转换说明符的详细说明,请参见snprintf(3)。

该实现符合有关NaN和无穷大值转换的C99标准:

If fp

is a NaN, +NaN, or -NaN, and
f

(or
a,

e,

g)

is the conversion specifier, the conversion is to "nan", "nan", or "-nan",
respectively.
If
F

(or
A,

E,

G)

is the conversion specifier, the conversion is to "NAN" or "-NAN".

同样,如果fp为无穷大,则将其转换为[-] inf或[-] INF。

格式字符串格式错误会导致未定义的行为。

返回值

如果n有足够的空间,则strfromd(),strfromf()和strfroml()函数将返回在str中写入的字符数,而不计算终止的空字节。因此,n或更大的返回值意味着输出被截断。

版本

从2.25版开始,glibc中提供了strfromd(),strfromf()和strfroml()函数。

属性

有关本节中使用的术语的说明,请参见GNU C库手册中的attribute(7)和POSIX安全概念部分。

单元格不一致

注意:这些属性是初步的。

遵循规范

C99,ISO / IEC TS 18661-1。

备注

strfromd(),strfromf()和strfroml()函数考虑了当前语言环境的LC_NUMERIC类别。

示例

要将值12.1作为浮点类型转换为使用十进制表示法的字符串,结果为" 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转换为字符串,结果为" 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)

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/