我写了这个简短的代码来测试我的isdigit
功能的认识:(您的输入不是一个数)为什么Isdigit函数不能正常工作?
int inChar;
printf("enter input:");
scanf(" %d", &inChar);
if (isdigit(inChar))
printf("Your input was a number");
else
printf("Your input was not a number.\n");
当我测试这个程序,我输入一个数字,C返回else语句。所以,无论我输入一个数字还是一个字母,程序都会返回else语句。
这是为什么呢?
isdigit适用于char类型,而不是int。使用%c读取 – stark
C库函数void isdigit(int c)检查传递的字符是否为十进制数字字符。 –
@stark详细信息:'isdigit(int)'接受一个'int'参数,并且在'[0 ... UCHAR_MAX]'和'EOF'范围内工作。如果传递给'isdigit()'并且是负数(而不是'EOF'),则通过'“%c”'读取的值为UB。 – chux