繁体   English   中英

无法中断“ while”循环-C

[英]Unable to break out of “while” loop - C

我试图实现一个简单的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);
    }

我也尝试过做-循环而仍然没有喜悦,知道问题可能出在哪里吗?

至少有两个问题:

  fflush(stdin);

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

    scanf("&c", &choice);

应该:

    scanf("%c", &choice);

我认为最后一行应该是

scanf("%c", &choice);

代替

scanf("&c", &choice);

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

另外,正如其他人指出的那样,请使用scanf("%c", &choice); 阅读选择。

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

请注意,scanf返回匹配的输入数量,因此您应该检查返回值。 如果由于某种原因输入未映射到字符,则您的变量可能保持不变。 在调用scanf之前,将choice设置为!= 'y' ,以便仅在输入y继续。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM