0

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

到目前为止,这是我检查字符的代码:

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);

抱歉,如果我没有多大意义,但我要问的是,我是否可以在将字符数组的值发送到 atof 之前检查它是否为 0,或者进行某种检查,以便我实际上可以为向量元素的条目?

4

2 回答 2

2

不要使用atof():atof()没有有用的错误指示。改为使用strtod()

于 2013-11-08T23:28:06.167 回答
-1

通常最简单的解决方案很难发现:

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

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

于 2013-11-08T23:40:30.100 回答