为什么 isdigit() 不起作用?
Why doesn't isdigit() work?
我正在尝试制作一个生成随机数的程序,要求用户猜测然后回答他是否猜对了。出于某种原因,无论用户是否输入数字,它都会像没有输入一样做出响应。有任何想法吗?感谢您帮助初学者 :)
#include<stdio.h>
#include<ctype.h>
#include<time.h>
main()
{
char iRandomNum = '[=10=]';
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 值,如果它不是数字则 returns 0
如果是则为非 0
。
您传递给它的整数值不一定是 ascii 值,您不需要检查它是否是数字,因为您使用 scanf()
.
读取它
如果您想确保 scanf()
确实读取了一个数字,请检查 scanf()
的 return 值。
试试这个
if (scanf("%d", &iResponse) != 1)
printf("you did not choose a number\n");
而不是 if (isdigit( ...
还有一点,main()
必须returnint
.
我正在尝试制作一个生成随机数的程序,要求用户猜测然后回答他是否猜对了。出于某种原因,无论用户是否输入数字,它都会像没有输入一样做出响应。有任何想法吗?感谢您帮助初学者 :)
#include<stdio.h>
#include<ctype.h>
#include<time.h>
main()
{
char iRandomNum = '[=10=]';
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 值,如果它不是数字则 returns 0
如果是则为非 0
。
您传递给它的整数值不一定是 ascii 值,您不需要检查它是否是数字,因为您使用 scanf()
.
如果您想确保 scanf()
确实读取了一个数字,请检查 scanf()
的 return 值。
试试这个
if (scanf("%d", &iResponse) != 1)
printf("you did not choose a number\n");
而不是 if (isdigit( ...
还有一点,main()
必须returnint
.