我在尝试弄清楚如何使用相同的功能(验证),使用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
)时,我需要它来询问一定数量的数字。
任何帮助都将不胜感激。
答案 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;
}