在C中运行时解析浮点数的标准方法是什么?

时间:2010-04-12 15:00:26

标签: c string simulation bison

我有一个科学应用程序,我想在运行时输入初始值。我可以选择从命令行获取它们,或者从输入文件中获取它们。这些选项中的任何一个都输入到通用解析器,该解析器使用strtod返回每个模拟运行的初始值的链接列表。我要么使用命令行参数,要么使用getline()来读取值。

问题是,我应该滚动自己的解析器,还是应该使用解析器生成器或某个库?什么是标准方法?这是我将在运行时读取的唯一数据,其他所有数据都在编译时设置(输出文件和其他一些非常简单的东西除外)。

谢谢,

乔尔

3 个答案:

答案 0 :(得分:5)

同时检查strtof()是否为浮点数,strtod()是否为双打。

答案 1 :(得分:3)

sscanf

可能是解析它们的标准方法。

但是,sscanf存在一些问题,特别是在解析用户输入时。

当然,

atof

答案 2 :(得分:0)

一般情况下,我更喜欢数据输入来自文件(例如运行的初始条件,时间步长总数等),标志输入来自命令行(例如输入文件名,输出文件名等)。这允许文件被存档并再次使用,并允许将注释嵌入文件中以帮助解释输入。

如果输入文件具有常规格式:
对于解析,从文件中读取一整行,并使用sscanf将该行“解析”为变量。

如果输入文件格式不规则: 修复文件格式以使其成为常规格式(如果这是一个选项)。 如果没有,那么strtof和strtod是最好的选择。