有人可以帮我在我的代码中找到错误吗?我对编程很陌生,我试图制作一个也使用isdigit()
的简单猜谜游戏。
#include <stdio.h>
#include <ctype.h>
main()
{
int iRandom = 0;
int iGuess = 0;
srand(time(NULL));
iRandom = rand()%10 + 1;
printf("\nPlease guess a number between 1 and 10: ");
scanf("%d", &iGuess);
if (isdigit(iGuess)){
if(iGuess == iRandom){
printf("\nYou guessed the correct number!\n");
}
else{
printf("\nThat wasn't the correct number!\n");
printf("\nThe correct number was %d\n", iRandom);
}
}
else{
printf("\nYou did not guess a number.\n");
}
}
问题是,无论我是否输入数字,程序都返回&#34;你没有猜到一个数字&#34;。运行gcc编译器也不会带来我能看到的任何明显错误。如果我的嵌套if
语句搞砸了,有人可以解释为什么,如果isdigit(iGuess)
被评估为true,它仍会运行else
部分吗?
答案 0 :(得分:4)
您使用isdigit()
错误,它用于确定ascii值是否为数字,您正在读取数字,因此您不需要isdigit()
。
为了确实输入了一个数字,你需要检查scanf()
的返回值,比如
if (scanf("%d", &iGuess) == 1)
{
if(iGuess == iRandom)
printf("\nYou guessed the correct number!\n");
else
{
printf("\nThat wasn't the correct number!\n");
printf("\nThe correct number was %d\n", iRandom);
}
}
else
{
printf("\nYou did not INPUT a number.\n");
}
我看过书中使用的scanf()
方式错误,即忽略了它的返回值,以及其他库函数,我建议在开始使用scanf()
之前至少阅读手册页,就像例如this one。
回到我十几岁的时候,我想成为一名程序员,我有一本关于使用计算机的书,里面有一本BASIC脚本,这是我一生中读过的第一个程序,之后我的父亲买了一台计算机用于工作,它有Windows 95,当然有MS DOS和Quick Basic,所以我开始使用它。
主要的信息来源是帮助,我不太了解那么多英语,但是阅读我学到的关于大多数功能的帮助,只需选择随机选择并阅读,然后通过猜测该功能可能从它的名称中做了什么,但即使在猜测之后,我仍然会阅读帮助。