有没有办法使用atof并确定更改的值是实际的0还是有错误的值?

时间:2013-11-08 23:25:02

标签: c

我正在试图找出一种方法来使用atof()来创建一个简单的向量计算器,但我唯一的问题是输入向量的元素。使用atof,因为如果字符没有转换,则返回值为0。无论如何要检查用户从fgets输入到字符数组的值是否为0,然后才传递给atof?

这是我到目前为止检查角色的代码:

do
{
    printf("%s", promptMessage);
    fgets(size, 256, stdin);
    /*if(size == 0)
    {
        myInput = atof(size);
        sucessful = true;
    }*/
    if(atof(size) != 0)
    {

        myInput = atof(size);
        sucessful = true;
    }
    else
    {
        printf("Please enter a correct number: ");
    }
}while(!sucessful);

很抱歉,如果我没有多大意义,但我要问的是,我可以检查字符数组中的值是否为0,然后再将其发送到atof,或者进行某种检查以便我实际上可以设置为0 vector元素的条目值?

2 个答案:

答案 0 :(得分:2)

请勿使用atof()atof()没有有用的错误指示。请改用strtod()

答案 1 :(得分:-1)

通常最容易找到最简单的解决方案:

if ( memcmp(buffer,"0.0\n",4) == 0 )
{
    // zero - can call atof
}
else
{
    // whatever
}

当然,您可能要求零实际上以这种方式表示,而不是任何其他模式。毕竟理智的人写0.0不是-0.000等; - )