我需要询问用户的输入,并且他/她应该能够写一个浮点数,我需要对这两个数字进行一些计算,但我在{之后遇到问题' {1}}测试...即使我输入一个整数,它也会转到isdigit
这是我的代码:
continue;
为上传这些功能而道歉,但由于我是新手,问题可能就在那里。 欢呼声。
答案 0 :(得分:7)
isDigit()
只接受字符输入。
检查输入是否正确的最佳方法是使用
if(scanf("%f", &userNum) != 1) {
// Handle item not float here
}
由于scanf()
将返回正确扫描的项目数。
答案 1 :(得分:3)
IsDigit()仅当字符是十进制数字时才检查函数。
让我们说:
int isdigit ( int c );
检查c是否为十进制数字。
十进制数字可以是以下任何一个:0 1 2 3 4 5 6 7 8 9.
如果c是十进制数,则isdigit()函数将返回非零;否则,它将返回0。
答案 2 :(得分:1)
你也可以尝试这样的事情:
int get_float(char *val, float *F){
char *eptr;
float f;
errno = 0;
f = strtof(val, &eptr);
if(eptr != val && errno != ERANGE){
*F = f;
return 1;
}
return 0;
如果val
指向浮点数函数返回1&将此数字设为*F
,否则返回0.