这么简单的问题,我居然搞不懂了,想撞墙。
本帖最后由 一剑飘零 于 2022-5-24 01:20 编辑救命啊,1点多了还不想睡。感觉超级简单的问题。居然卡壳了。调试ab==0,一直都是0,a是1,a我还没输入就是1。这。。。
#include <stdio.h>
int main() { //日了狗了,越是简单的,怎么越是错误。
int a,ab;
printf("请输入:");
ab = scanf("%d", &a);
while (ab != 1) { //如果我输入一个非int型,一直循环,根本不让我再输入的机会,一直打印请重新输入:。
printf("请重新输入:");
ab = scanf("%d", &a);
}
return 0;
} 加一个数据类型if条件判断喽 和类型没关系,其实这是一个比较常见的错误
在你输入不符合指定数据类型的数据时,会强制转化成指定类型,这就导致了你缓冲区一直有数据存在,然后scanf会继续读取缓冲区的数据,从而循环
解决方法
清除缓冲区
setbuf(stdin, NULL)
前面加个输入数据类型判断 本帖最后由 一剑飘零 于 2022-5-24 08:24 编辑
zxl1227 发表于 2022-5-24 01:48
加一个数据类型if条件判断喽
意思是在后面加一个if((int)ab==1) break?
这样吗? 如果是这样是没用的,我实际都改了几次了。我再试版主的,应该是对的。
云在天 发表于 2022-5-24 02:00
和类型没关系,其实这是一个比较常见的错误
在你输入不符合指定数据类型的数据时,会强制转化成指定类型 ...
好的,谢谢,我试试。 别着急慢慢来 支持你撞墙 {:1_925:}不至于不至于 难道循环之后不应该加个break跳出循环么……或者是给个重新输入的机会啊……
页:
[1]
2