检查switch语句中的数字

时间:2010-02-14 16:43:39

标签: switch-statement

有一种简单的方法可以用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(???):
}

8 个答案:

答案 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;
        }
        ...
    }
}