c - 基本 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 时,它首先打印默认结果,如果我之后立即再次执行,它会给我正确的输入。有什么帮助吗?
谢谢!
解决方案
您正在使用 scanf 之类的
scanf("%c\n", &answer);
而是使用
scanf( " %c", &answer );
请参阅转换说明符之前的空白%c
。它允许跳过空格。
推荐阅读
- android - 如何使用公钥验证 ECDSA?
- c++ - 迭代变量在for循环中超出范围
- python - 复选框列表值只表示所有未选中?
- postgresql - 临时 Postgres 表过早丢失
- android - 在 api 19 中关闭应用程序时 NotificationService 不起作用
- macos - 在 MacOS 上打开 App.app 文件和 App.app/contents/MacOS/Electron 有什么不同?
- powershell - 使用条件语句创建一个读取文件内容直到内容中的特定字符串的代码
- java - 使用 setFetchSize() 的内存消耗
- sql - 有没有一种简单的方法可以在“WHERE”SQL 语句中使用列号
- java - 为什么我收到的是 XML 响应而不是 JSON?