繁体   English   中英

读取浮点数

[英]Reading floating point numbers

我正在尝试读取浮点数(命令行输入)。 这是正确的方法吗?

sscanf(argv[i], "%f", &float)

sscanf()argv元素一起使用是从命令行参数中提取float一种方法。 您还应该检查返回值,以查看float是否实际上是从字符串中提取出来并存储到变量中的。

也许更好的方法是使用strtod() ,因为您可以使用第二个参数执行更好的验证。 您可以使用该指针检查转换中使用的最后一个字符是否为字符串中的最后一个字符。 即。 您可以检查"3.5abc"包含有效的浮点数,但整个字符串不是一个有效的浮点数。

如果命令行输入的意思是从stdin读取输入,那么这与argv无关,而应该使用scanf()fgets() + strtod()

请注意,还有atof函数,该函数本质上是strtod的版本,没有提供额外的错误检查功能。 从手册页来看只是: strtod(nptr, (char **) NULL); C99还提供了strtof()函数,该函数返回float而不是double 您可以为float分配一个double并对其进行隐式转换,因此不要认为使用strtod()会引起问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM