0

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

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

1 回答 1

2

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

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

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

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

于 2012-02-26T23:07:54.953 回答