Problems :
scanf("%d", userin); //you are sending variable
- This is not right as you need to send address of the
variable
as argument to the scanf()
not the variable
so instead change it to :
scanf("%d", &userin); //ypu need to send the address instead
and rand()%11
would produce any number from 0
to 10
but not from 1
to 10
as other answer suggests, use :
(rand()%10)+1 //to produce number from 1 to 10
Solution :
And also include time.h
function to use srand(time(NULL));
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
srand(time(NULL));
int userin;
printf("Guess a number from 1 to 10\n");
scanf("%d", &userin);
int r = (rand() % 10)+1;
if (r==userin)
{
printf ("you are right");
}
else
{
printf("Try again");
}
return 0;
}
Why use srand(time(NULL))
?
rand()
isn't random at all, it's just a function which produces a sequence of numbers which are superficially random and repeat themselves over a period.
The only thing you can change is the seed, which changes your start position in the sequence.
and, srand(time(NULL))
is used for this very reason