Do While statement using a Char

I'm using a do while statement and at the end I want the user to use Y if he wants to play again or N if they do not. I'm having no luck with this so what am I missing.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
  #include<stdio.h>
#include<stdlib.h>
#include<time.h>

int diceRoll(int dealRoll)	{
	int result, die1, die2;

	srand(time(0));

	die1 = rand() % 6 + 1;
	die2 = rand() % 6 + 1;

	result = die1 + die2;

	return result;
}

main()	{

	int choice, dealRoll = 0;
	int startMoney = 10, currentMoney = 0, moneyUp = 0, moneyDown = 0;
	char playAgain;



	do{
		printf("\nPlace your bets: under 7 (Enter 1), over 7 (Enter 2), for 7 (Enter 3):   ");
		scanf_s("%i", &choice);

		dealRoll = diceRoll(dealRoll);
		printf("\nShake, Shake, the dealer rolls %d\n", dealRoll);

		if (choice == 1)	{
			if (dealRoll < 7)	{
				currentMoney = startMoney + 1;
				printf("You are a winner.  You now have %d\n", currentMoney);
				startMoney = currentMoney;
				moneyUp++;
			}
			else {
				if (dealRoll > 7)	{
					currentMoney = startMoney - 1;
					printf("You lose.  You now have %d\n", currentMoney);
					startMoney = currentMoney;
					moneyDown--;
				}
			}
		}

		if (choice == 2)	{
			if (dealRoll > 7)	{
				currentMoney = startMoney + 1;
				printf("You are a winner.  You now have %d\n", currentMoney);
				startMoney = currentMoney;
				moneyUp++;
			}
			else {
				if (dealRoll < 7)	{
					currentMoney = startMoney - 1;
					printf("You lose.  You now have %d\n", currentMoney);
					startMoney = currentMoney;
					moneyDown--;
				}
			}
		}

		if (choice == 3)	{
			if (dealRoll == 7)	{
				currentMoney = startMoney + 3;
				printf("You are a winner.  You now have %d\n", currentMoney);
				startMoney = currentMoney;
				moneyUp += 3;
			}
			else {
				if (dealRoll != 7)	{
					currentMoney = startMoney - 3;
					printf("You lose.  You now have %d\n", currentMoney);
					startMoney = currentMoney;
					moneyDown -= 3;
				}
			}
		}	
		printf("Would you like to place another bet (Y/N):   ");
		scanf_s(" %c ", &playAgain);
	} while (playAgain != 'Y');
		
	system("pause");
}
Maybe try while(playAgain != 'y' && playAgain != 'Y')

Or is this not the problem you are talking about?
No i'm at a point where no matter what I put it the loop just keep going back to the top. so if I use N it restarts the loop
Oh, I'm sorry, I should have read and thought a bit better for the first answer...
The loop will not break until playAgain == 'Y'. So anything other than 'Y' will not break the loop.
You probably want something like

while(playAgain == 'y' || playAgain == 'Y')

so that the loop will only run again if you enter y (or Y). And it won't if you enter anything else.
You were doing the exact opposite, which can happen to everybody sometimes ;)

But that does not solve everything. There is also a problem with the scanf_s. You can verify this for yourself, try printing the value of playAgain after scanf_s...
I don't much use C io... Something that works for me - but I'm not sure it's good or bad practice - is like this:
scanf_s(" %c", &playAgain, 1);


Also!!! your main function is missing its return type (= int)
One other problem:

Line 8: srand() does not belong in the diceRoll function. srand() should be called once and only once at the beginning of main. As you have it, calling srand() inside diceRoll will reinitialize the random number generator each time diceRoll is called and will return the same sequence of pseudo-random numbers.
Topic archived. No new replies allowed.