C: Do-While Loop Repeating Too Much!

前端 未结 3 1448
醉梦人生
醉梦人生 2021-01-27 17:05

I have a small program that which is confusing me. I am trying using a loop to take input from user. In case input is wrong, it is repeated again but if it is right, it exits.

相关标签:
3条回答
  • 2021-01-27 17:54

    First of all, # include <stdio.h> and use getc(stdin) to get a character. It'll help you to prevent cursor from moving and putting unnecessary characters to console. Secondly, write the welcome message before the loop.

    0 讨论(0)
  • 2021-01-27 18:08

    You want

    do
    {
    
    } while (condition);
    

    As your forgot the semicolon, you get:

    do
    {
        ....
    }
    
    while(condition)
        do something else;
    

    You could have noticed that just by auto-indenting your code in an editor like I did on your question.

    Also when you do some scanf you should rather include the \n in the format specification.

    0 讨论(0)
  • 2021-01-27 18:09

    Because you have given scanf three characters to process. It removes first first character the first time it calls scanf getting 'a', but still has 'bc' left in the stdin buffer.

    You need to check for leftover stuff in your buffer before you look for input again. And I'd avoid flushing the stdin buffer because it's undefined behavior. (http://www.gidnetwork.com/b-57.html)

    You can read the remaining characters and discard them with

    do{  
        scanf("%c", &user_status);  
    }while(user_status!='\n'); //This discards all characters until you get to a newline
    

    right after you read the character you want.

    0 讨论(0)
提交回复
热议问题