无法打破“while”循环 - C

时间:2010-01-30 18:52:56

标签: c while-loop

我正在尝试实现一个简单的while循环让用户输入多个标记而不必重新加载应用程序,出于某种原因,无论我似乎输入它总是循环。

我看过使用调试器,它似乎不接受最终的scanf()询问是否重复自己。

int mark = 0;
    char grade;
    char choice = 'y';

    while(choice == 'y')
    {
        //Request input
        printf("enter a mark: ");
        scanf("%d", &mark);

        //Assess mark
        grade = assess(mark);

        //Output result
        printf("That equals ");
        printf("%c", grade);
        printf(" when graded\n");

        //Repeat?
        printf("Again?...\n");
        fflush(stdin);
        scanf("&c", &choice);
    }

我也尝试过do-while循环但仍然没有任何乐趣,任何想法可能存在的问题?

4 个答案:

答案 0 :(得分:8)

至少有两个问题:

  fflush(stdin);

未定义 - 您只能刷新输出流。和

    scanf("&c", &choice);

应该是:

    scanf("%c", &choice);

答案 1 :(得分:3)

我认为最后一行应该是

scanf("%c", &choice);

而不是

scanf("&c", &choice);

答案 2 :(得分:1)

fflush()仅为输出流定义。 comp.lang.c FAQ不建议将其用于stdin

另外,正如其他人所说,使用scanf("%c", &choice);来阅读选择。

答案 3 :(得分:1)

尝试scanf("%c", &choice);

请注意,scanf返回匹配的输入数,因此您应该检查返回值。如果输入没有,由于som原因,映射到一个字符,你的变量可能会保持不变。在调用scanf之前,请将choice设置为!= 'y',以便只有在输入y时才会继续。