1

我在尝试弄清楚如何使用相同的功能(验证)、使用 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)时,我需要它来询问一些号码。

任何帮助,将不胜感激。

4

2 回答 2

2

如果您仅限于此函数签名,则可以使用内部静态标志

于 2012-10-30T05:17:51.607 回答
1

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

然后打开类型进行各种操作。但是我建议您更改函数的名称,因为 validate 不太合适。例如numGenEngine,类型表示 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;
}
于 2012-10-30T05:14:15.127 回答