首页 > 解决方案 > 基本 C - 切换案例重复

问题描述

我正在做一个项目,你回答一个字符,如果它不是 4 个答案之一,它会告诉你再试一次。如果它不是 4 个中的正确之一,它将停止运行。这是一个片段。

#include <stdio.h>
#include <stdbool.h>
bool switchCheck = true;
char answer;

        printf("A. English\nB. French\nC. Spanish\nD. German\n");
      do{
        scanf("%c\n", &answer);
        switch (answer){
          case 'C':
            printf("Very nice ");
            break;
          case 'B':
          case 'A':
          case 'D':
            printf("Sorry! Incorrect. Code Ends\n");
            switchCheck =false;
            break;
          default:
            printf("Try Again\n");
        }
      }while(switchCheck==true);
     

出于某种原因,当我输入 A、B 或 D 时,它首先打印默认结果,如果我之后立即再次执行,它会给我正确的输入。有什么帮助吗?

谢谢!

标签: ccharswitch-statementscanfwhitespace

解决方案


您正在使用 scanf 之类的

scanf("%c\n", &answer);

而是使用

scanf( " %c", &answer );

请参阅转换说明符之前的空白%c。它允许跳过空格。


推荐阅读