我正在尝试制作一个生成随机数的程序,要求用户进行猜测,然后响应他是否正确。由于某种原因,无论用户是否输入数字,它都会做出响应,好像他没有输入数字一样。有任何想法吗?感谢您帮助初学者:)
#include<stdio.h>
#include<ctype.h>
#include<time.h>
main()
{
char iRandomNum = '\0';
int iResponse = 0;
srand(time(NULL));
iRandomNum = (rand() % 10) + 1;
printf("Guess the number between 1 yand 10 : ");
scanf("%d", &iResponse);
if (isdigit(iResponse) == 0)
printf("you did not choose a number\n");
else if (iResponse == iRandomNum)
printf("you guessed correctly\n");
else
printf("you were wrong the number was %c", iRandomNum);
}
最佳答案
isdigit()
接受字符的ascii值,如果不是数字,则返回0
,否则返回非0
。
您正在传递给它一个不一定是ascii值的整数值,因为您用scanf()
读取它,所以不需要检查它是否是数字。
如果要确保scanf()
确实读取了一个数字,请改为检查scanf()
的返回值。
尝试这个
if (scanf("%d", &iResponse) != 1)
printf("you did not choose a number\n");
代替
if (isdigit( ...
还有一件事,
main()
必须返回int
。关于c - 为什么isdigit()不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28112978/