C语言中的while循环
While loop in C
任何人都可以向我解释为什么当我输入字符 'Q' 时我的 while 循环不会结束吗?即使当用户输入 'Q' 时我将我的布尔值设置为 false,它仍然在循环,它应该在 char input
.
的 scanf 之后结束
我的代码:
#include <stdio.h>
typedef int bool;
#define true 1
#define false 0
int main(void) {
char input;
char output;
bool tf = true;
printf("Welcome to the Coder!\n");
while (tf) {
printf("Choose Input (H,A,B,Q) : ");
scanf_s(" %c\n", &input);
if (input == 'Q') {
tf = false;
}
else {
printf("Choose Output (H,A,B) : ");
scanf_s(" %c\n", &output);
}
}
return 0;
}
我怀疑您在控制台输入小写字母 q:
我建议您将代码更改为:
if (input == 'Q' || input == 'q') {
tf = false;
}
问题是 scanf_s
的奇怪情况。根据 MSDN,您使用此语法读取单个字符:
scanf_s(" %c", &input, 1);
从 scanf_s
中删除 \n
并添加 1 个参数,这样它就知道只读取 1 个字符。
如果
你应该加上
(input == 'Q' || input == 'q')
另外为什么要添加typedef int bool;
?这是不需要的。
我把scanf_s
换成了scanf
因为我的编译器不认识(不小心解决了问题。
因为它更好。当我编译这个时没有错误。
已编译->Compiled Code
任何人都可以向我解释为什么当我输入字符 'Q' 时我的 while 循环不会结束吗?即使当用户输入 'Q' 时我将我的布尔值设置为 false,它仍然在循环,它应该在 char input
.
我的代码:
#include <stdio.h>
typedef int bool;
#define true 1
#define false 0
int main(void) {
char input;
char output;
bool tf = true;
printf("Welcome to the Coder!\n");
while (tf) {
printf("Choose Input (H,A,B,Q) : ");
scanf_s(" %c\n", &input);
if (input == 'Q') {
tf = false;
}
else {
printf("Choose Output (H,A,B) : ");
scanf_s(" %c\n", &output);
}
}
return 0;
}
我怀疑您在控制台输入小写字母 q:
我建议您将代码更改为:
if (input == 'Q' || input == 'q') {
tf = false;
}
问题是 scanf_s
的奇怪情况。根据 MSDN,您使用此语法读取单个字符:
scanf_s(" %c", &input, 1);
从 scanf_s
中删除 \n
并添加 1 个参数,这样它就知道只读取 1 个字符。
如果
你应该加上(input == 'Q' || input == 'q')
另外为什么要添加typedef int bool;
?这是不需要的。
我把scanf_s
换成了scanf
因为我的编译器不认识(不小心解决了问题。
因为它更好。当我编译这个时没有错误。
已编译->Compiled Code