C从参数字符串解析double

时间:2010-02-08 08:18:28

标签: c parsing arguments

我正在尝试解析C中的参数值并将数字转换为double值。我有:

char *stringEnd; double num = strtod("123.0", &stringEnd);

我使用123.0来测试函数,但它总是返回值0.0。有人知道我做错了吗?

5 个答案:

答案 0 :(得分:7)

您是否包含相关标题?即:#include <stdlib.h>

首先(你应该一直这样做),尝试编译GCC上的所有警告(-Wall)。

如果您收到有关strtod未定义的警告,则会显示问题的来源。

这是一个令人讨厌的问题,因为C会隐式声明它没有原型作为返回int的任何函数!

答案 1 :(得分:2)

您必须使用strtod即可:

double num = strtod("123.0",NULL);

您也可以使用sscanf

double num;    
sscanf("123.0","%lf",&num);

答案 2 :(得分:1)

您可以使用sscanf

double num;
sscanf("123.0", "%lf", &num);

答案 3 :(得分:1)

您需要包含stdlib.h

答案 4 :(得分:0)

您的操作系统使用哪种语言?我不确定C函数strtod是如何反应的,但我知道等效的delphi函数会考虑操作系统的设置。有些语言(法语,德语,......)使用“,”而不是“。”。作为小数点分隔符。