gpt4 book ai didi

c - 当满足函数条件时 Printf 不工作

转载 作者:行者123 更新时间:2023-11-30 18:36:07 26 4
gpt4 key购买 nike

我编写了一个函数 getIntLimited,要求用户输入 10 到 20 之间的有效整数,并且 getIntLimited 调用函数 getInt 来确认输入是否是有效整数。如果用户实际输入 10 到 20 之间的有效整数,一切都会按预期工作。它将简单地继续到空白换行符以扫描另一个输入,而不是输出 printf 语句 ("You Enter: %d\n", iVal); 我不确定为什么在满足条件时不输出 printf 语句。这是我的代码:

#include <stdio.h>
#include <stdlib.h>

//tools
void flushKeyboard(void);
void pause(void);
int getInt(void);
int getIntLimited(int lowerLimit, int upperLimit);
double getDoubleLimited(double lowerLimit, double upperLimit);

//app interface

int main(void){
flushKeyboard();
pause();

int answer;
printf("Enter an integer: ");
answer = getInt();
printf("You entered: %d \n", answer);

int iVal;
printf("Enter an integer between 10 and 20: ");
int lowerLimit = 10;
int upperLimit = 20;

iVal = getIntLimited(lowerLimit, upperLimit);
printf("You entered: %d \n", iVal);

return 0;
}


//code your functions here:
void flushKeyboard(void)
{
int read;

while (( read = getchar()) != '\n' && read != EOF) {
continue;
}
return;
}

void pause(void)
{
printf("Press <ENTER> to continue...");
flushKeyboard();
return;
}

int getInt(void)
{
int Value;
char NL = 'x';

while (scanf("%d%c", &Value, &NL) != 2 || NL != '\n') {
flushKeyboard();
printf("Invalid integer, please try again: ");
}

return Value;
}


int getIntLimited(int lowerLimit, int upperLimit)
{
int limit;
do {
limit = getInt();

if(lowerLimit > limit || upperLimit < limit) {
printf("Invalid value, %d < %d < %d: ", lowerLimit, limit, upperLimit);
}
}while(lowerLimit <= limit || upperLimit >= limit);
return limit;

}

最佳答案

您的 do/while 条件描述了您实际想要发生的相反情况:您希望循环在 limit 介于两者之间时结束lowerLimitupperLimit

当您这样做时,请考虑将变量 limit 重命名为更具描述性的内容 - 例如,valueresult,因为数字用户输入的用作限制。

条件应该是

do {
...
} while(result < lowerLimit || result > upperLimit);

关于c - 当满足函数条件时 Printf 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43059446/

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