TacoCat
TacoCat

Reputation: 469

Two questions, why the double print and how to start it over again! C programming

I'm writing the simplest game in C - Number guessing game. The game itself works good. Yaay me. The problem is that I don't know how to start it over. See code below:

  int main()
{
    int number, innum, times = 0;
    char playAgain;
    srand((unsigned)time(NULL));
    number = 5;//rand() % 1000;
for(;;)
{
    while(innum != number)
    {

        printf("Enter a number: ");
        scanf("%d", &innum);

        if(innum > number)
            printf("The entered number is too big!\n");
        if(innum < number)
            printf("The entered number is too small!\n");

        times++;

        if(innum == number)
        {
            printf("Congrats you guessed right!\n");
            printf("It took you %d tries\n", times);
        }

    }

    printf("Do you want to play again?");
    scanf("%c", &playAgain);
    if(playAgain == 'n')
        break;


}
return 0;
}

The first problem is that it prints "Do you want to play again?" two times. Why is that? And the other problem is, how do I get the game to start again?

Thanks in advance.

Upvotes: 0

Views: 126

Answers (1)

Rizier123
Rizier123

Reputation: 59681

This should work for you:

(What i did? Added a space by the scanf and put the declaration of number, times and innum in the for loop)

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {

    int number, innum, times;
    char playAgain;
    srand((unsigned)time(NULL));

    for(;;) {

        /*Declare the variables here*/
        number = 5; //rand() % 1000;
        innum = 0;
        times = 0;

        while(innum != number) {

            printf("Enter a number: ");
            scanf("%d", &innum);

            if(innum > number)
                printf("The entered number is too big!\n");
            if(innum < number)
                printf("The entered number is too small!\n");

            times++;

            if(innum == number) {
                printf("Congrats you guessed right!\n");
                printf("It took you %d tries\n", times);
            }

        }

        printf("Do you want to play again?");
        scanf(" %c", &playAgain);
             //^Added space here to 'eat' any new line in the buffer
        if(playAgain == 'n')
            break;


    }

    return 0;

}

possible output:

Enter a number: 2
The entered number is too small!
Enter a number: 6
The entered number is too big!
Enter a number: 5
Congrats you guessed right!
It took you 3 tries
Do you want to play again?y
Enter a number: 3
The entered number is too small!
Enter a number: 5
Congrats you guessed right!
It took you 2 tries
Do you want to play again?n

Upvotes: 4

Related Questions