gpt4 book ai didi

c - C 中的 while 循环无论条件如何都会执行

转载 作者:行者123 更新时间:2023-11-30 15:43:16 28 4
gpt4 key购买 nike

#include <stdio.h>
#include <string.h>
#include <ctype.h>


int main(void){
int corX = 0;

do{
printf("Please enter number X:\n");
scanf("%d",&corX);
} while(!(isdigit(corX) && corX>1 && corX<80));

printf("You entered X as: %d\n",corX);
return 0;
}

嗨!上面的代码应该检查输入的值是否是整数并符合范围。如果没有,程序应该再次询问。不幸的是,它不能以这种方式工作。无论我写什么,循环总是会经过,结果我收到输入的数字数字和其他符号的 0。有人可以解释一下我做错了什么吗?

最佳答案

你的 while 条件似乎有问题。我重写了它,得到了我认为是你想要的行为(当输入小于 1 或大于 80 时要求输入)

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int clean_stdin()
{
while (getchar()!='\n');
return 1;
}


int main(void){
int corX = 0;

do{
printf("Please enter number X:\n");
scanf("%d",&corX);
} while( ( corX<1 || corX>80 ) && clean_stdin() );

printf("You entered X as: %d\n",corX);
return 0;
}

编辑:我没有足够仔细地检查我的初始帖子。根本不需要检查 isdigit,因为您已经在 scanf 中使用了 %d,我将其从 while 条件中完全删除了。作为无限循环问题的快速修复,我添加了本文接受的答案中提到的 clean_stdin() 函数 How to scanf only integer and repeat reading if the user enter non numeric characters? @Gangadhar 在他的评论中提到,我建议阅读(我也应该在发布之前完成)

关于c - C 中的 while 循环无论条件如何都会执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19890868/

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