使用相同的功能验证2个不同的问题

时间:2012-10-30 05:09:16

标签: c

我在尝试弄清楚如何使用相同的功能(验证),使用2个不同的问题验证2个不同的数字输入时遇到问题

int validate(int low, int high) {
    int flag = 0, number = 0;

    do 
    {
        printf("Enter maximum value between %d and %d: ", low, high);
        scanf("%d", &number);
        if (number <= low || number > high) 
        {
            printf("INVALID! Must enter a value between %d and %d: ", low, high);
            scanf("%d", &number);
        }
        else {
            flag = 1;
        }
    } while(flag == 0);
    return number;
}

这是main()

int main () {
    int num1, num2;

    switch(menu()) {
    case 1:
    printf("~~~~~~~\n6/49 Number Generator\n");
    num1 = validate(1,49);
    num2 = validate(1, 6);
    break;
    default:
        printf("end");
    }
return(0);
}

当我第二次致电validate()(返回num2)时,我需要它来询问一定数量的数字。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

如果您受限于此功能签名,则可以使用内部静态标志

答案 1 :(得分:1)

理想情况下,您的validate()应该有另一个参数来表示它实际上会做什么。 类似于int validate(int low, int high, int type)

然后打开类型进行各种操作。但后来我建议你改变功能的名称,因为验证不太合适。例如numGenEngine其中type表示step1,step2等。

考虑到你需要完整的函数定义,你可以使用静态变量。

int validate(int low, int high) {
    static int step = 0;
    int flag = 0, number = 0;

    if (step == 0) {
        // the first thing
    } else if (step == 1) {
        // the other thing
            // to reuse the function for the next set of operations
            // reset step to -1 here
    }

    step++;
    return number;
}