在 C 中获取用户输入时跳过的代码行

Line of code skipped when getting user input in C

已经解决了,非常感谢

看这里:

由于字符数最少,已将答案复制到此处。

在这一行之后 scanf("%d",&e) 添加一个 getchar() 像这样:

scanf("%d",&e);
getchar();

当您按下 Enter 时,换行符保留在缓冲区中,因此当调用 fgets 时,换行符被传递给它,并且它的行为就像您按下 Enter

scanf() 完全按照您的要求读取,在缓冲区中该行的末尾留下以下 \nfgets() 将读取它。我建议也使用 fgets() 读取输入并使用 sscanf() 读取 choice integer:

    char input[10];

    ...
    fgets(input, 10, stdin);
    sscanf(input, "%d", &choice);