gpt4 book ai didi

在 C 中调用一个函数到另一个函数中

转载 作者:行者123 更新时间:2023-11-30 14:56:10 27 4
gpt4 key购买 nike

我有一个函数来验证该数字是否是整数,然后我尝试将此函数调用到另一个函数来验证该数字是否在限制内。首先它不返回值,而是返回扫描整数,我该如何解决这个问题?然后我输入的值就很重要了,10 始终是 iVal。为什么?

 printf("Enter an integer between 10 and 20: ");
iVal = getIntLimited(10, 20);

printf("Your entered %d\n", iVal);

void flushKeyboard(void){
char enter;
do{
scanf("%c", &enter);
} while (enter != '\n');

}

int getInt(void){
int value;
char nl;

do{
scanf("%d%c", &value, &nl);

if (nl != '\n'){
flushKeyboard();
printf("Invalid integer, please try again: ");
return value;
}

} while (nl != '\n');
}

int getIntLimited(int lowerLimit, int upperLimit){

int iVal;
getInt() == iVal;

if ((getInt() > lowerLimit) && (getInt() < upperLimit)){
return iVal;
}
else{
printf("Invalid value, %d < value > %d: ", lowerLimit, upperLimit);
printf("\n");
}
}

最佳答案

正如 Vlad from Moscow 所指出的,您需要将输入分配给变量并返回它。

您的getInt()函数应该是这样的:

int getInt(){
int value;
char nl;
do{
scanf("%d%c", &value, &nl);
if (nl != '\n'){
flushKeyboard();
printf("Invalid integer, please try again: ");
}
}while (nl != '\n');
return value; //now you're returning the last scanned valid value!
}

此外,您正在调用 getInt()函数三次:

1)当您“输入”您的getIntLimited()时功能。

第二)当你测试getInt() > lowerLimit

第三)当你测试getInt() < upperLimit

自参数lowerLimitupperLimit已经传递给函数getIntLimited(int lowerLimit, int upperLimit) ,您不需要获取它们的值。所以,我会改变你的 getIntLimited(int lowerLimit, int upperLimit)功能:

int getIntLimited(int lowerLimit, int upperLimit){
int value;
value = getInt(); //assign the input value to a variable
if(value > lowerLimit && value < upperLimit){
return value; //now you're returning the value that you got on getInt()
}
else{
printf("Invalid value, %d < %d > %d: ", lowerLimit, value, upperLimit);
printf("\n");
}
return value; //now you're able to check for this value on the first printf: printf("Your entered %d\n", iVal);
}

关于在 C 中调用一个函数到另一个函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44876022/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com