我在大学学习C,并且必须为此编写一些代码。

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

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

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


我想对具有不同需求的多个“程序”使用相同的功能。我也希望能够向该功能添加新的“参数要求”。
帮助真的很感激!

最佳答案

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

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);

}

关于c - C:用户输入验证功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47003956/

10-12 16:11