View Single Post
symantec11_76

 
Member Since: Jan 18, 2008
Posts: 5
symantec11_76 is on a distinguished road

symantec11_76 is offline
I determined the problem was that there was remnants in the scanf before getting to my character scanf. Therefore, the scanf just went on through. The solution was to make the scanf skip any white space by adding a space before the scan. Here is my working program below.



#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <ctype.h>
//Library stdlib.h needed for srand. Library time.h needed for time randomization.
//Library ctype.h needed for toupper upper case adjustment.

int main ()

{
int iRandom=0,iGuess=0,iGuessMade=0;
char cExit='\0';
//Data type calls - iRandom is random value, iGuess is for users guess, iGuessMade to count guesses and cExit is for y or n to play again.

srand(time(NULL));
//srand call for rand to randomize each time

iRandom = (rand() % 1000)+1;
//Randomize number between 0 and 999, then add 1 in order to assign values between 1 and 1000.
//Randomize before first loop in order to keep same value until guessed right.

do
{
printf("\n\n************************************** *");
printf("\n* I have a number between 1 and 1000. *");
printf("\n* Can you guess my number? *");
printf("\n* Please type your guess: *");
printf("\n***************************************\ n\n");
scanf("%d", &iGuess);
iGuessMade++; //iGuessMade counts number of times guessed.

if (iGuess == iRandom) //Test if guess is the same as random value.
{
printf("\n\n************************************** ********");
printf("\n* Excellent! *");
printf("\n* You guessed the right number! *");
printf("\n* That was guess number %d. Can you beat it? *", iGuessMade);
printf("\n* Would you like to play again (y or n)? *");
printf("\n**************************************** ******\n\n");
scanf(" %c", &cExit); //Space added before %c to skip white space before next character input. GCC & Miracle C compatible.
if (toupper (cExit) == 'Y'){ //toupper to accept upper or lower case.
iRandom = (rand() % 1000)+1; //Randomize again for new value in next game if y chosen.
iGuessMade=0; //Resets number of guesses if user plays again.
}
}

else
{
if (iGuess > iRandom)
{

printf("\n\n************************************** ");
printf("\n* %d is too High! Try Again. *", iGuess);
printf("\n* That was guess number %d. *", iGuessMade);
printf("\n**************************************\n \n");
} //Test if iGuess is too high.

else
{

printf("\n\n************************************** ");
printf("\n* %d is too Low! Try Again. *", iGuess);
printf("\n* That was guess number %d. *", iGuessMade);
printf("\n**************************************\n \n");
} //Output if iGuess is too low, only other option if previous tests fail.
}
} while (toupper (cExit) != 'N');
//Test if cExit is not equal to N. Toupper compensates for upper or lower case input. If cExit is not N, then game replays.

return 0;
}

Macbook
OS X 10.5.5
XCode 3.1.2
QUOTE Thanks