我正在尝试解析C中的参数值并将数字转换为double值。我有:
char *stringEnd;
double num = strtod("123.0", &stringEnd);
我使用123.0来测试函数,但它总是返回值0.0。有人知道我做错了吗?
答案 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函数会考虑操作系统的设置。有些语言(法语,德语,......)使用“,”而不是“。”。作为小数点分隔符。