程序没有循环

时间:2014-02-06 14:54:10

标签: c while-loop choice

我试图让程序打印出“OK”,只要我在最后输入'y'作为选择,但它不是循环,只是打印出“OK”并结束程序即使我在最后输入'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;
}

5 个答案:

答案 0 :(得分:4)

在按 Enter 键的第一次迭代时,换行符\n将与y一起传递给输入。在第二次迭代scanf_s上读取\n。 改变

scanf_s("%c", &c);  

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

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

答案 1 :(得分:2)

按如下所示更改scanf_s

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

此额外参数指定c参数的大小。普通旧scanf不需要此参数,但以_s结尾的版本不需要

同样,带有if语句的break块是不必要的,因为while循环上的条件有效地执行相同的操作。它可以写成如下

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

答案 2 :(得分:0)

你错了scanf

如果你这样使用,你会看到它正在运作..

       #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;
}

答案 3 :(得分:0)

好的我使用了scanf而不是scanf_s,这解决了这个问题,谢谢大家。

答案 4 :(得分:-1)

%c之前加一个空格以跳过空格。