新手C学生在这里。
有人可以解释一下为什么isdigit()为10+值返回true? 我正在做一个关于猜谜游戏的非常基本的任务,并且必须使用isdigit()来通知用户他是否输入了数字1-10。 该程序似乎运行正常,否则,我只想知道isdigit()背后的原因为值10 +返回true。
<div className="text-area">
<div className="backdrop">
<div className="highlights">
This is
<span className="highlight" data-tip data-for="tooltip-span">highlighted</span>
<ReactTooltip id="tooltip-span">
<span>My comment!</span>
</ReactTooltip>
text.
</div>
</div>
<textarea>
This is highlighted text.
</textarea>
</div>
答案 0 :(得分:4)
如果您添加printf
来记录cResponse
的值,问题就会很快显现出来:
printf("\nGuess a number between 1 and 10: ");
scanf("%c", &cResponse);
printf("cResponse is %c\n", cResponse);
输出:
Guess a number between 1 and 10: 10
cResponse is 1
正如你所看到的,只有第一个字符存储在cResponse
中(这是有意义的,因为它只是一个字符),并且由于第一个字符是一个数字,你的{{1 } call返回true。
如果您想阅读大于10的数字,可以改为阅读isdigit()
:
int
请注意,在这种情况下您无法使用int cResponse = 0;
printf("\nGuess a number between 1 and 10: ");
scanf("%d", &cResponse);
printf("cResponse is %d\n", cResponse); // prints '10' if I type '10'
,但您仍然可以使用isdigit()
轻松检查边界。
答案 1 :(得分:0)
您正在将char
传递给isdigit
,10
只能容纳一个字符。因此,当您输入cResponse
时,只有第一个字符(这是一个数字)才会进入{{1}}。
答案 2 :(得分:0)
不是将用户输入作为char读取,而是以int形式读取。这样您就可以使用if(guess >= 1 && guess <= 10)
。因为你需要10作为输入范围的一部分,所以char(这是一个单个字符)不会这样做。您将需要使用字符串(这会使事情变得更复杂)或者只使用int。