C:用户输入验证的功能

时间:2017-10-29 18:48:42

标签: c function validation input

我正在大学学习C,并且必须为它编写几个代码。

我想为用户输入验证(scanf())编写一个函数。它应该是一个单独的函数(不在main()中)并具有某些属性。例如。:      用户输入必须是整数且介于0和100之间。      用户输入必须是素数。      用户输入必须是特定字母。      ...      ... 我已经有了这样的东西,但问题是,它非常具体,我必须每次都为特定的代码重写它。

while (scanf("%d", &n) != 1 || n < 1 || n > 100) {

    while (getchar() != '\n');
        printf("Wrong Input !\n\nn:");
}

我想对每个不同要求的几个“程序”使用相同的功能。此外,我希望能够为该功能添加新的“参数要求”。 帮助真的很感激!

1 个答案:

答案 0 :(得分:0)

您可以传递执行特定工作的验证功能。请参阅以下示例代码以说明此方法。希望它有所帮助。

void inputWithValidation(int *n, int(*isValidFunc)(int)) {

    while (scanf("%d", n) != 1 || !isValidFunc(*n)) {

        while (getchar() != '\n');
        printf("Wrong Input !\n\nn:");
    }

}

int isBetween10And100(int n) {
    return n >= 0 && n <= 100;
}

int isPositive(int n) {
    return n >= 0;
}

int main() {

    int n;

    inputWithValidation(&n, isBetween10And100);

    inputWithValidation(&n, isPositive);

}