如何在C中验证用户输入?

时间:2012-09-18 15:28:44

标签: c validation

好的,所以我想在前言中说我对C知之甚少。我在高中独立学习,所以我来找你们帮忙。我正在服用C1而且我不知道那是#或++或只是C,甚至是那些之间的差异。无论如何我的问题是我如何确保用户输入整数而不是浮点数,或确保该人没有输入&符号进入浮点输入。

我在记事本中编码并将它们保存为.c文件,然后在命令提示符中输入它们,如果这样可以让您了解我正在使用的内容。

2 个答案:

答案 0 :(得分:0)

您可以使用头文件ctype.h中声明的函数,尤其是函数isdigit

答案 1 :(得分:0)

好吧,我想你是编程C,关于gcc的评论。但是进入问题,如果你使用的是scanf,那么它几乎可以检查所有内容,你只需要知道如何使用它,例如:

int main(void)
{
    float input;
    if(scanf("%f", &input) == 1)
    {
        printf("OK, I could read your float: %f.\n", input);
    }
    else
    {
        printf("Not OK, I couldn't read your float.\n");
    }
    return 0;
}

如果我输入5.4654,它将打印正确的数字。 如果我输入5.4&654,它将打印5.4,因为那里有一个浮点数,直到&字符。 但是如果我输入abc,它将失败,并且打印它无法读取你的浮动。

这可行的原因是因为scanf返回读取的成功数据的数量。因此,如果您要求"%f %f %d",则必须检查返回值是否为3,如果是,则一切都正常,尽管随机字符会阻碍但未被读取。

或者,谈论整数类型(和类似的),你可以使用functions provided by ctype.h