代码之家  ›  专栏  ›  技术社区  ›  LandonSchropp

从参数字符串分析double

  •  6
  • LandonSchropp  · 技术社区  · 14 年前

    我试图解析C语言中的参数值,并将其转换为双精度值。我有:

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

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

    5 回复  |  直到 14 年前
        1
  •  7
  •   John Carter    14 年前

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

    不过,首先(无论如何,您应该一直这样做),尝试编译时打开所有警告( -Wall 在GCC上。

    如果你得到关于 strtod 如果未定义,则表示问题来自何处。

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

        2
  •  2
  •   codaddict    14 年前

    如果必须使用 strtod 你可以做到:

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

    您也可以使用 sscanf

    double num;    
    sscanf("123.0","%lf",&num);
    
        3
  •  1
  •   kennytm    14 年前

    你可以使用 sscanf .

    double num;
    sscanf("123.0", "%lf", &num);
    
        4
  •  1
  •   dc.    14 年前

    你需要包含stdlib.h

        5
  •  0
  •   Name    14 年前

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