检查Char是否包含数字并将其转换为INT

时间:2014-10-17 22:34:18

标签: c

那么有程序正在运行它的功能,但我试图检查,如果用户输入的值是数字(不包含字母或符号)。所以基本上我使用的是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);

1 个答案:

答案 0 :(得分:1)

<强>错误:

  • 你的布尔逻辑
  • 您的空字符
  • atoiisgood
  • 时致电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);