检查有效整数

我需要一点帮助我的程序来获得一个有效的整数。 我写了一个工作正常的代码,但如果我输入例如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(); } 

您可能必须将值读取为字符串,然后使用例如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作为输入的情况将导致在上面的代码中打印第二个字符串。

好吧,这就是scanf工作方式 – 它会匹配它的能力,它会将F留在输入缓冲区中。

其他方法是读取字符串值(使用%s格式说明符),它将接受所有字符,然后您可以使用strtof (您可以找到许多示例如何使用它)将其转换为浮点并进行错误检查。

您可以读取字符串并检查(char by char)ascii值是否在正确的范围内(48-57)。