gpt4 book ai didi

c - LynxOS strtod 与 Linux 不同

转载 作者:太空宇宙 更新时间:2023-11-04 00:09:57 30 4
gpt4 key购买 nike

LynxOS 的 strtod 实现似乎无法处理与 Linux 或 Solaris 相同的所有情况。我遇到的问题是我正在尝试解析一些可以包含十进制或十六进制数字的文本。

在 Linux 上我调用

a = strtod(pStr, (char **)NULL);

并且我在 a 中获得了输入字符串(例如 1.2345670x40)的预期值。

在 LynxOS 上,十进制数字解析正确,但十六进制解析简单为 0,因为它在遇到“x”时停止。看手册页,LynxOS的strtod似乎只支持输入十进制字符串。

这里有人知道可以在 Lynx 和 Linux 上运行的替代方案吗?

最佳答案

引自标准 (7.20.1.3) ( http://www.open-std.org/JTC1/sc22/wg14/www/docs/n1256.pdf )

The expected form of the subject sequence is an optional plus or minus sign, then one of the following:
— a nonempty sequence of decimal digits optionally containing a decimal-point character, then an optional exponent part as defined in 6.4.4.2;
— a 0x or 0X, then a nonempty sequence of hexadecimal digits optionally containing a decimal-point character, then an optional binary exponent part as defined in 6.4.4.2;
— [...]

因此,您在 LynxOS 上使用的编译器不是 C99 编译器。


我的 C89 标准副本没有引用 0x 前缀:

4.10.1.4 The strtod function

[...]

The expected form of the subject sequence is an optional plus or minus sign, then a nonempty sequence of digits optionally containing a decimal-point character, then an optional exponent part [...]

关于c - LynxOS strtod 与 Linux 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4419016/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com