检查有效整数

时间:2013-11-20 08:58:54

标签: c

我需要帮助我的程序获得一个有效的整数。我写了一个工作正常的代码,但如果我输入例如453F,它应该显示“Invalid int”,但我的输出是453.似乎它不检查最后一个int,但我不知道如何制作它检查并显示为无效输入。这是我的代码:

int main ()
{
    int x;
    getInteger(x);
    return 0;
}

int getInteger (int x)
{
    float check;

    printf ("enter a integer number: \n\n");
    scanf ("%f", &check);
    x = check;
    if (x == check)
    {
    printf("\nYour number is %d", x);
    }
    else
    {
         printf("\nThis is not an integer number, please insert an integer!\n\n");
    }
    getch();
}

3 个答案:

答案 0 :(得分:0)

您可能必须将该值读取为字符串,然后使用例如strtol将其转换为带错误检查的整数。

可以这样做:

char str[64];

scanf("%63s", str);

char *endptr;
int value = (int) strtol(str, &endptr, 10);

if (endptr == str)
    printf("Not a valid integer\n");
else if (*endptr != '\0')
    printf("Valid number, but followed by non-numeric data\n");
else
    printf("A valid number: %d\n", value);

您输入453F的情况会导致第二个字符串在上面的代码中打印出来。

答案 1 :(得分:0)

嗯,这就是scanf的工作方式 - 它会匹配它的内容,它会将F留在输入缓冲区中。

其他方法是读取字符串值(使用%s格式说明符),它将接受所有字符,然后你可以使用strtof(你可以找到很多如何使用它的例子)来转换它通过错误检查浮动到浮点数。

答案 2 :(得分:0)

你可以读作一个字符串并检查(char by char)ascii值在正确的范围内(48-57)。