我正在使用C对我的程序进行一些错误检查,目前正在测试以确保输入数据点为float
/ int
(基本上不是字符)
为此我使用isalpha
函数。它适用于100以下的所有数字,但如果我输入值100,它将返回1024而不是0.任何特殊原因会发生这种情况,或者您是否知道更好的错误检查方法?
if ((isalpha(T1) != 0) || (isalpha(T2) != 0) || (isalpha(T3) != 0)
|| (isalpha(X1) != 0) || (isalpha(X2) != 0) || (isalpha(X3) != 0))
{
error checking statements
}
else
{
Calculations
}
答案 0 :(得分:1)
为什么要将浮动传递给isalpha
?将字符存储在浮点数并检查它的重点是什么?
isalpha
的声明为int isalpha ( int c );
,因此如果您将浮点数传递给它,浮动将截断为int
,使其生成错误的结果。尝试输入99.5或类似的东西,然后看
更重要的是,isalpha
仅适用于char值或EOF,其他值将调用未定义的行为
如果ch的值不能表示为unsigned char且不等于EOF,则行为未定义。
这基本上是一个XY问题。 isalpha
不是验证输入值的方法。您需要将输入作为字符串并检查它是否符合您的条件