【发布时间】:2018-10-11 19:10:06
【问题描述】:
我想知道如何在这种情况下继续从键盘输入:如果给定的输入是正数,它会继续使用代码如果给定的输入是负数或字母,它必须打印“插入一个正数”,然后再次询问另一个输入,直到它有正确的输入。关于负输入和正输入,我写的代码效果很好,但是当我写信时它会出错。我尝试的检查如下
chk=isalpha(n);
while(!chk || n<0)
{
printf("Inserire un intero positivo \n");
scanf("%d", &n);
chk=isalpha(n);
}
printf("%d\n%d\n", t1, t2);
在这种情况下,如果我输入一个负数,它会正常工作,但如果我输入一个字母,printf 就会循环。我也试过while(isalpha(n) || n<0) 和一堆其他的代码,我会为你跳过。请帮我解决这个问题
【问题讨论】:
-
你应该检查
scanf的返回值。或者完全放弃它以支持fgets。 -
您的问题实际上与 C 无关。它与
scanf有关。如果您想学习 C,最好的建议是:不要使用 scanf。永远。 -
您不能使用
isalpha来完成此操作。这将检查n的值,如果它是字母字符代码之一,则返回 true。例如,如果用户输入 97,它将返回 true,因为 97 是字母“a”的 ASCII 表示。
标签: c while-loop