C语言 程序未循环

lkaoscv7  于 2023-01-04  发布在  其他
关注(0)|答案(5)|浏览(194)

我试图让程序打印出“确定”,只要我输入“y”作为选择在最后,但它不是循环,它只是打印出“确定”,并结束程序,即使我输入一个“y”在最后。请帮助。

#include <stdio.h>
int main()
{
    char c = 'y';
    while (c == 'y')
    {
        printf_s("OK\n");
        scanf_s("%c", &c);
        if (c != 'y')
        {
            break;
        }
    }
    return 0;
}
33qvvth1

33qvvth11#

在第一次迭代中,当你按下Enter键时,一个换行符\ny沿着被传递到输入端。在第二次迭代中,scanf_s读取\n

scanf_s("%c", &c);

scanf_s(" %c", &c);  
         ^Notice the space before %c

%c说明符之前的空格可以占用任意数量的空白字符。

wdebmtf2

wdebmtf22#

按如下所示更改scanf_s

scanf_s("%c", &c, 1);

这个额外的参数指定了c参数的大小。普通的老版本scanf不需要这个参数,但是以_s结尾的版本需要
此外,带有break语句的if块也是不必要的,因为while循环上的条件实际上也做了同样的事情。

while (c == 'y')
{
    printf_s("OK\n");
    scanf_s("%c", &c, 1);
}
x4shl7ld

x4shl7ld3#

好的,我用scanf代替了scanf_s,这样就解决了这个问题,谢谢大家。

4szc88ey

4szc88ey4#

你扫描错了
如果你这样使用,你会看到它在工作。

#include <stdio.h>

int main()
{
    int c = 1;
    while (c == 1)
    {
        printf_s("OK\n");
        scanf_s("%d", &c);
        if (c != 1)
        {
            printf_s("hello\n");
                continue;
        }

    }
    return 0;
}
7uzetpgm

7uzetpgm5#

%c前放置一个空格以跳过空格。

相关问题