有一种简单的方法可以用switch语句检查数字0-9吗?我正在编写一个程序来检查某些字符和数字。比如检查'\ 0','F'或'f',并想知道是否还有一种方法以类似的方式检查0-9。我知道如果一个字符是数字0-9,我可以写一个程序来返回true或false,但是不确定如何在switch语句中使用其中一个case。就像我有:
const int lowerBound = 48;
const int upperBound = 57;
bool isDigit(char *digit)
{
if (*digit >= lowerBound && *digit <= upperBound) {
return true;
}
else {
return false;
}
}
我怎么去
switch (*singleChar) {
case(???):
}
答案 0 :(得分:3)
switch(mychar) {
case '0':
case '1':
case '2':
..
// your code to handle them here
break;
.. other cases
}
这称为“直通” - 如果一个案例块没有以中断结束,则控制流程将在下一个案例陈述中继续。
答案 1 :(得分:2)
坚持下去!当“ctype.h”头文件中的函数已经存在时,为什么要定义自己的isDigit
函数...考虑一下:
char *s = "01234"; char *p = s; while(*p){ switch(*p){ case 'A' : break; default: if (isdigit(*p)){ puts("Digit"); p++; } break; } }
希望这有帮助, 最好的祝福, 汤姆。
答案 2 :(得分:1)
这可能会这样做,但说实话,这很难看。我可能会使用不同的构造(也许是一个正则表达式?),除非我知道这是一个主要的热点,即便如此我也会对其进行分析。
switch (*singlChar) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
// do stuff
break;
default:
// do other stuff
}
答案 3 :(得分:1)
我认为GCC支持非标准扩展,您可以执行以下操作:
switch(myChar)
{
case '0'...'2':
// Your code to handle them here
break;
.. other cases
}
但它是非标准的,不会在Visual Studio下编译。例如。
答案 4 :(得分:1)
我可能会为特定字母('f','F'...)编写switch语句,并在else
块中添加条件。
switch ( ch ) {
case 'f': // ...
break;
case 'F': // ...
break;
default:
if ( isDigit(ch) ) {
}
};
(另请注意,标头C中的标准isdigit
函数位于标头<cctype>
中,标准C中的另一个函数位于<locale>
中,它将区域设置作为参数并根据该区域设置执行检查)< / p>
答案 5 :(得分:0)
你可以这样做
char input = 'a';
switch (input)
{
case 'a': // do something; break;
// so on and so forth...
default: break
}
答案 6 :(得分:0)
请使用以下代码。
开关(* singleChar){
case 48 ... 57: return true;
default: return false;
}
答案 7 :(得分:0)
怎么样:
int isdigit(char input) {
return (input < '0' || input > '9') ? 0 : 1;
}
...
if(isdigit(currentChar)) {
...
}
else {
switch(currentChar) {
case 'a' {
...
break;
}
...
}
}