铭凡 发表于 2022-12-8 17:22:28

为啥不能判断数据输入是否正确?

C语言程序部分代码如下:

                scanf("%d", &i);//这里一旦输入错就不让再次输入了怎么回事?
                for( ; i < 1 || i > 7 || use == 0; )
                {
                        printf("输入错误, 请重新输入: ");
                        scanf("%d", &i);
                }//for循环结束

我试过用getch(), 但是貌似不行, 怎么说呢, 比如我输入一个a, 它就会一直输出"输入错误, 请重新输入:", 满屏都是

jhq999 发表于 2022-12-8 18:18:45

因为'a'不是int,所以一直都在缓存里,scanf函数一直取不着int类型的值,死循环
scanf("%d", &i);//这里一旦输入错就不让再次输入了怎么回事?
                for( ; i < 1 || i > 7 || use == 0; )
                {
                        printf("输入错误, 请重新输入: ");
                        fflash(stdin);//清除输入缓存
                        scanf("%d", &i);
                }//for循环结束

铭凡 发表于 2022-12-8 18:35:54

本帖最后由 铭凡 于 2022-12-8 18:39 编辑

jhq999 发表于 2022-12-8 18:18
因为'a'不是int,所以一直都在缓存里,scanf函数一直取不着int类型的值,死循环

谢谢!

这里刚才我编译的时候,有报错,我查了一下函数大全https://fishc.com.cn/forum.php?mod=viewthread&tid=66397&extra=page%3D1%26filter%3Dtypeid%26typeid%3D583

这个写的应该是fflush吧,还是说我头文件引用错了?

jhq999 发表于 2022-12-8 19:32:15

铭凡 发表于 2022-12-8 18:35
谢谢!

这里刚才我编译的时候,有报错,我查了一下函数大全https://fishc.com.cn/forum.php?mod=vie ...

鄙人英语废,见谅{:10_282:}
页: [1]
查看完整版本: 为啥不能判断数据输入是否正确?