那么有程序正在运行它的功能,但我试图检查,如果用户输入的值是数字(不包含字母或符号)。所以基本上我使用的是isdigit或' / 0'条件。程序编译正确,但我输入错误,输入少于3种类型(偶数...)。这有什么问题?我唯一需要的是在数字为0-999时跳过循环,在不是数字时重新询问,或者它不是数字。
char x[5];
bool isgood;
int tab[20][2],i=0,a;
do
{
isgood = TRUE;
printf("Write a where 0<a<1000\n");
scanf("%4s", x);
for (int j = 0; j < 4; j++)
{
if (isdigit(x[j])==0 || x[j]!='/0') isgood = FALSE;
}
a = atoi(x);
if (a<1000 && isgood == TRUE) break;
} while (1);
答案 0 :(得分:1)
<强>错误:强>
atoi
为isgood
FALSE
更改此内容:
isdigit(x[j])==0 || x[j]!='/0'
对此:
isdigit(x[j])==0 && x[j]!='\0'
而且:
a = atoi(x);
if (a<1000 && isgood == TRUE) break;
对此:
if (isgood == TRUE)
{
a = atoi(x);
if (0<a && a<1000)
break;
}
这是一个更简单的方法:
int x;
char c;
do
{
printf("Write a where 0<a<1000\n");
if (scanf("%d",&x) == 0)
scanf("%c",&c);
else if (0<x && x<1000)
break;
}
while (1);