从输入中获取特定范围的浮点数

时间:2017-04-06 01:06:36

标签: c input floating-point cs50

因此,我采用了哈佛的CS50,这可能会让那些接受这个问题的人受益,并且会遇到这个问题。

我正在创建一个名为Resize的程序,我们接受3个命令行参数,第一个是'f'。确切报价:

  

第一个(f)必须是(0.0,100.0)中的浮点值。

问题是:如何从命令行参数设置一系列可接受的值。 我应该使用sscan()和atof()函数来做到这一点。

1 个答案:

答案 0 :(得分:1)

无法限制命令行参数,因为它完全由命令的用户决定。您可以做的是获取参数并根据您的要求进行检查。在您的情况下,获取参数,然后将其转换为double值并检查它是否在所需范围内。

if (argc != 4) {
     puts("not enough argument");
     exit(1);
}
char *strf = argv[1];
char *end = NULL;
double f = strtod(strf, &end);
if (end == strf || *end != '\0') {
    puts("not a valid floating point value");
    exit(1);
}
if (errno == ERANGE) {
    puts("value out of range");
    exit(1);
}
if (f <= 0.0 || f > 100.0) {
    puts("value not in required range");
    exit(2);
}
// ... do other work with f