c - 嵌套开关: why does the second switch command not accept an input?

标签 c nested switch-statement dev-c++

我是 C 编程新手,当我完成 C 语言类(class)的作业时,我遇到了一个问题......

int main() {
char one, ona, onb;

/*code for choices (a), (b), and (c) here*/
scanf ("%c", &one);

switch (one) {
    case 'a':
        /*code for choices (d), and (e) here*/
        scanf ("%c", &ona);

        switch (ona) {
            case 'd':
                printf ("end");
                break;
            case 'e':
                printf ("continue");
                break;
        }
        break;

    case 'b':
        /*code for case 'b' here*/
        break;

    case 'c':
        /*code for case 'c' here*/
        break;
}

system ("pause > nul");
getch ();
return 0;
}

当我编译和运行控制台应用程序时,我的嵌套开关命令(ona 和 onb 下的命令)不起作用?

我已经检查了所有的中断;命令都在那里?我有什么遗漏/做错了吗?

我尝试阅读有关嵌套开关的其他类似问题,但是,我还没有找到可以解决我的问题的问题...

我在多个 printf 语句后使用 system ("pasue > nul") 是否有助于找到答案? (另外,我正在使用 dev-c++,因为它是我们的教授告诉我们使用的推荐应用程序)

我希望有人能够找到我编码错误的内容;;提前非常感谢! :)

最佳答案

您可能正在输入类似“a d”的内容,导致第二个 scanf 读取 Enter 键。如果您编写代码来读取字符,则必须输入字符。如果您要输入行,请编写代码来读取行。

关于c - 嵌套开关: why does the second switch command not accept an input?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33478027/

相关文章:

objective-c - Objective-C 可以打开 NSString 吗?

javascript - Switch 语句未按预期工作

由于破坏 C 中的 "object"而更改指针

C - 将 3.00 变为 3

C++ - 用于根据枚举类型调用函数的宏

c++ - 嵌套的 Switch 语句

c - MD5 将 uint8_t 转换为字符串

android - 嵌套的 RecyclerView onClickListener 不工作

nested - 从 Modelica 中的嵌套可替换类扩展类

java - 无法访问 Switch Case/Java 内的枚举值