Using a While Loop to Control Program Termination in C

AI Thread Summary
To implement a while loop in C that allows a user to choose whether to terminate or repeat a program, the correct structure involves using a conditional check with the equality operator (==). The loop should continue executing as long as the user inputs a specific value, such as 2 for repeating the program. The user input should be captured using `scanf`, ensuring to use the address operator (&) to avoid infinite loops caused by incorrect memory referencing. For example, a typical implementation would involve initializing a variable, prompting the user for input, and checking that input within the loop. If the user inputs 2, the loop continues; if they input 1, the loop terminates. Additionally, using boolean variables can enhance code readability. It’s crucial to differentiate between data types, such as integers and characters, when processing user input to prevent errors. The use of the `break;` statement can also be considered for controlling loop execution.
Nothing000
Messages
403
Reaction score
0
How would one use a while loop in the C programmin language to ask the user if they want to terminate the program, or execute it again. You could say press 1 to terminate and press 2 to execute again. How would someone set that up with a while loop?
 
Computer science news on Phys.org
That's not what a while loop does; a while loop is merely one of the components you will use in your program.

If you write down, step by step, exactly how you want your program to behave, it will hopefully be clear how to write it!
 
I want to say:
while variable = 2
execute program

and I will ask the user to press 1 to use the program again, or press to to terminate the program.
 
are you home hurkyl?
 
user_choice = 1
while (user_choice == 1)
{
program code;
ask "what do you want to do (1 for repeat 2 for exit)";
scanf into user_choice;
}
 
That is exactly what I am doing and I am getting caugt in an infinite loop.
 
when I run the program it goes through it the first time fine, then it asks enter 1 to repeat or 2 to exit. When I enter 1 it goes into an infinite loop.
 
make sure you used &user_choice with the scanf argument, if you just put user_choice scanf will put 2 at the memory location 1...

you can printf user_choice and see if it got the right value just before the loop ends, so you'd be sure its 2...
or put your code here so we can see what's wrong...by the way... it's just style, but i suggest using boolean for that kind of thing:
Code:
run=1;
while(run) {
     ...
     scanf("%d",&user_choice);
     if (user_choice==2) run=0;
}
it's just nicer.

i once was an efficiancy freak, id use one integer to store 16 boolenas...
 
Last edited:
Nothing000 said:
I want to say:
while variable = 2
execute program

It should be:

while variable == 2.

You want == not = here, else it loops forever.
 
  • #10
I have the == sign there, I just wrote it wrong in this thread. Sorry. I will post the souce code soon so you guys can look it over to see if you can help me.
 
  • #11
help!

How will i make an output of all even numbers from 2-18 using a while loop structure?:confused:
 
  • #12
note that you must differ between 1 and '1'. one is a int the other is a char. This is important in the type of data you read from your scanf.

You could also look into the "break;" keyword. and figure out how to do an infinite loop with just while(?) {}. for instance while(true) {} is a C++ option.
 

Similar threads

Back
Top