回 帖 发 新 帖 刷新版面

主题:switch的嵌套问题

void wnext()
{
    void choose();
    void anext();
    char s;
    printf("\nWhat next?\n");
    printf("a.Continue to operate\nb.Back to previous level\nc.End run\n");
    printf("you choice: ");
    getchar();
    scanf("%c",&s);
    switch(s)
    {
    case'a':[color=FF0000]anext();[/color]break;
    case'b':choose();break;
    case'c':break;
    default:printf("Your choice is wrong.Please choose again.");
    }
}

[color=FF0000]void anext()[/color]
{
    void sort();
    void search();
    void modify();
    void insert();
    void del();
    switch(next)
    {
    case'1':sort();break;
    case'2':search();break;
    case'3':modify();break;
    case'4':insert();break;
    case'5':del();
    }
}

PS:变量next之前已经赋值,sort()等也已经定义,没问题。
这样用switch怎么没有效果?要怎么改?

回复列表 (共6个回复)

沙发

你这里getchar()是否多余了啊 
getchar();
scanf("%c",&s);
可能你输入的第一个字符被getchar()截获了,scanf()获取不到你想要的 a b c,可以把 getchar();去掉看看

板凳

不对

3 楼

第一次输入字母时先回车,再输入字母,再回车
以后就是就不用先回车了,直接输入字母,回车。
或者把getchar();去掉,
scanf("%c",&s);给成scanf("%c,",&s);
输入字母、逗号、回车

主要是s是不是得到你要的字母了,你可以输出s看一下。

4 楼

顺便说一下,你的next用的字符型吗?
在anext中case里面判断的值都是字符的。

5 楼

getchar()得到的数据给了谁?有什么用?

6 楼

[quote]顺便说一下,你的next用的字符型吗?
在anext中case里面判断的值都是字符的。[/quote]

正解!那个getchar();删除的话编译会出错,而且我测试过可以正常使用。

我来回复

您尚未登录,请登录后再回复。点此登录或注册