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