有没有办法简化这个IF语句
有什么办法可以简化这个if说法吗?
if(num1 != 1 && num1 != 2 && num1 != 3 && num1 != 4 && num1 != 5 && num1 != 6 && num1 != 7 && num1 != 8 && num1 != 9 && num1 != 0){
printf("Invalid Number");
return 0;
}
的值num1将来自用户输入,我只想允许数字作为值,如果用户尝试输入数字以外的任何内容,我想Invalid Number被打印。
回答
似乎有效值num1是介于 0 和 9 之间的任何值。因此...
if ((num1 < 0) || (num1 > 9)) {
printf("Invalid number");
return 0;
}
根据您在下面的评论,我怀疑您真正想要做的是将用户的输入作为文本字符串读取,然后验证他输入的所有字符是否都是数字。strtol是一个合适的函数。
#include <stdio.h>
#include <stdlib.h>
int main()
{
long value = 0;
char* endptr = NULL;
bool input_is_valid = false;
char inputline[20 + 1] = { 0 };
printf("Enter a numbern");
scanf("%20s", inputline);
value = strtol(inputline, &endptr, 10);
input_is_valid = (*endptr == ' ') && (value != LONG_MAX) && (value != LONG_MIN);
if (!input_is_valid)
{
printf("Invalid inputn");
return 0;
}
return 0;
}