开发者

Unable to break out of "while" loop - C

开发者 https://www.devze.com 2022-12-19 03:40 出处:网络
I\'m trying to implement a simple while loop to let the user enter multiple marks without having to reload the application, for some reason no matter what i seem to enter it always loops.

I'm trying to implement a simple while loop to let the user enter multiple marks without having to reload the application, for some reason no matter what i seem to enter it always loops.

I've looked using the debugger and it开发者_运维知识库 doesn't seem to accept the final scanf() asking whether to repeat itself or not.

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

I've also tried it with a do - while loop and still no joy, any idea where the problem may lie?


At least two problems:

  fflush(stdin);

is undefined - you can only flush output streams. And:

    scanf("&c", &choice);

should be:

    scanf("%c", &choice);


I think last line should be

scanf("%c", &choice);

instead of

scanf("&c", &choice);


fflush() is only defined for output streams. The comp.lang.c FAQ does not recommend using it for stdin.

Also, as others have noted, use scanf("%c", &choice); to read the choice.


Try scanf("%c", &choice);.

Note that scanf returns the number of inputs matched, so you should really check the return value. If the input does not, for som reason, map to a character, your variable might be unchanged. Before the call to scanf, set choice to something != 'y', so that you only continue if a y is input.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号