int OperateGumBallMachine(void){
int total = 0;
char input = getchar();
RefillGumBallMachine();
for(input; input != 'x'; input = getchar()){
if(gMachine.iNumBlueGumBalls + gMachine.iNumGreenGumBalls + gMachine.iNumRedGumBalls == 0){
RefillGumBallMachine();
}
switch(input){
case 'n':
total += NICKLE;
if(total >= QUARTER){
total -= QUARTER;
DeliverGumBall();
printf("Your change is %d cents\n", total);
total = 0;
}
break;
case 'd':
total += DIME;
if(total >= QUARTER){
total -= QUARTER;
DeliverGumBall();
printf("Your change is %d cents\n", total);
total = 0;
}
break;
case 'q':
total += QUARTER;
if(total >= QUARTER){
total -= QUARTER;
DeliverGumBall();
printf("Your change is %d cents\n", total);
total = 0;
}
break;
default:
printf("Whoops you've entered the wrong command, please try again.");
break;
}
printf("You've deposited %d cents\n", total);
}
return(0);
}
This is the function I am having trouble with. Every time I run my program, and enter a character, my program prints the correct output (for example if I enter 'n' the first time, my program outputs "you've deposited 5 cents"), but then it also outputs the default message every time ("Whoops you've entered the wrong command, please try again."). Why is it printing this?
If I put this statement before the switch statement:
printf("%d\n", input)
to see what input the switch statement is getting, it shows 'n' and then the rest of the output, followed by a blank line and the the default statement again, as though it is running through the switch statement a second time with nothing entered for the input variable.
If I remove the default case for the switch statement it prints "You've deposited 5 cents" two times.
What is wrong with my code? Please help.