C中的SWITCH案例中的多个字符

问题描述 投票:1回答:3

我有一个学校项目,我正在使用一个菜单,用户可以选择他想做的事情。但是我希望选择变量为char not int。我可以在单个开关盒中添加multiple字符吗?我搜索了一个解决方案,但仅在值是int而不是char时才找到一个解决方案。我尝试过,但是没有用

char choice;
scanf("%c",&choice); 
switch(choice) {
                    case 'S','s': //do something
                    break;

                    case 'I','i': //do anotherthing
                    break;

                    default: printf("\n Unknown choice !");
                    break;
                   }
c switch-statement
3个回答
2
投票

您可以像这样使用掉线:

case 'S':
case 's':
    // do something
    break;
case ...

1
投票

对于初学者,请在scanf中使用以下格式

char choice;
scanf( " %c", &choice ); 
       ^^^

(请参阅转换说明符之前的空白)。否则,该功能还将读取空格字符。

例如,您可以使用多个相邻的案例标签

switch(choice) 
{
    case 'S':
    case 's': 
        //do something
        break;

    case 'I':
    case 'i': 
        //do anotherthing
        break;

    default: 
        printf("\n Unknown choice !");
        break;
}

一种替代方法是在切换之前将输入的字符转换为大写。例如

#include <ctype.h>

//...

char choice;
scanf( " %c",&choice ); 

switch( toupper( ( unsigned char )choice ) ) 
{
    case 'S':
        //do something
        break;

    case 'I':
        //do anotherthing
        break;

    default: 
        printf("\n Unknown choice !");
        break;
}

0
投票

您可以互相放置多个case标签:

switch(choice) {
case 'S':
case 's':
    //do something
    break;
case 'I':
case 'i': 
    //do anotherthing
    break;
default: 
    printf("\n Unknown choice !");
    break;
}
© www.soinside.com 2019 - 2024. All rights reserved.