我正在试图找出一种方法来使用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元素的条目值?
答案 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等; - )