看起来LynxOS的strtod实现并不能处理所有与Linux或Solaris相同的情况。我遇到的问题是,我正在尝试解析一些可能包含十进制或十六进制数字的文本。
在Linux上,我调用
a = strtod(pStr, (char **)NULL);我还得到了1.234567和0x40等输入字符串在a中的期望值。
在LynxOS上,十进制数可以正确解析,但十六进制会简单地解析为0,因为它在命中'x‘时会停止。查看手册页,LynxOS的strtod似乎只支持输入中的十进制字符串。
在座的各位有没有人知道可以同时在Lynx和Linux上工作的替代方案?
发布于 2010-12-12 06:12:39
引述自标准(7.20.1.3) ( http://www.open-std.org/JTC1/sc22/wg14/www/docs/n1256.pdf )
主题序列的预期形式是一个可选的加号或减号,然后是下列值之一:
-一个非空的十进制数字序列,可选地包含一个小数点字符,然后是一个可选的指数部分,如6.4.4.2中的defined;
- 0x或0X,然后是可选的包含小数点字符的非空的十六进制数字序列,然后是可选的二进制指数部分,如6.4.4.2中的defined;
- ...
因此,您在LynxOS上使用的编译器不是C99编译器。
我的C89标准副本没有引用0x前缀:
4.10.1.4 strtod函数
..。
主题序列的预期形式是一个可选的加号或减号,然后是一个可选的包含小数点字符的非空数字序列,然后是一个可选的指数部分...
https://stackoverflow.com/questions/4419016
复制相似问题