c 判断输入是否为数字的代码不正确
用了isdigit函数,但是所有输入都被判断为非数字了。
#include <stdio.h>
#include <ctype.h>
int test()
{
int tt[4];
scanf( "%d ", &tt[0]);
if(isdigit(tt[0]) == 0)
{
printf( "please input again. ");
test();
}
printf( "success ");
}
int main(int argc, char *argv[])
{
test();
}
后面的这一个在输入是字母的时候,也照样断定为数字了,怎么回事?
#include <stdio.h>
#include <ctype.h>
int test()
{
int tt[4];
scanf( "%d ", &tt[0]);
if((tt[0] < 0) || (tt[0] > 9))
{
printf( "您的输入不符合规则,请重新输入: \n ");
test();
}
printf( "success ");
}
int main(int argc, char *argv[])
{
test();
}
[解决办法]
int tt[4];
scanf( "%d ", &tt[0]);
-----------------------------
char tt[4];
scanf( "%c ", &tt[0]);
[解决办法]
int tt[4];
scanf( "%d ", &tt[0]);
if(isdigit(tt[0]) == 0)//isdigit判断 '0 '- '9 '才是true,tt是int,你输入的值就必须是 '0 '~ '9 '对应的ascii才行,输入0-9当然isdigit是false,0-9可不是‘0’-‘9’