吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1760|回复: 11
收起左侧

[求助] 这么简单的问题,我居然搞不懂了,想撞墙。

[复制链接]
一剑飘零 发表于 2022-5-24 01:17
本帖最后由 一剑飘零 于 2022-5-24 01:20 编辑

救命啊,1点多了还不想睡。感觉超级简单的问题。居然卡壳了。调试ab==0,一直都是0,a是1,a我还没输入就是1。这。。。
[C] 纯文本查看 复制代码
#include <stdio.h>
int main() {   //日了狗了,越是简单的,怎么越是错误。
        int a,ab;
        printf("请输入:");
        ab = scanf("%d", &a);
        while (ab != 1) {            //如果我输入一个非int型,一直循环,根本不让我再输入的机会,一直打印请重新输入:。
                printf("请重新输入:");   
                ab = scanf("%d", &a);
        }
        return 0;
}

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
为之奈何? + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

zxl1227 发表于 2022-5-24 01:48
加一个数据类型if条件判断喽
云在天 发表于 2022-5-24 02:00
和类型没关系,其实这是一个比较常见的错误

在你输入不符合指定数据类型的数据时,会强制转化成指定类型,这就导致了你缓冲区一直有数据存在,然后scanf会继续读取缓冲区的数据,从而循环

解决方法

清除缓冲区
setbuf(stdin, NULL)

免费评分

参与人数 4吾爱币 +4 热心值 +4 收起 理由
Black_山猫 + 1 热心回复!
尹铭 + 1 + 1 热心回复!
一剑飘零 + 1 + 1 这才是正解,其它都说错了。确实不是类型的关系,还有加判断实际我也试了,.
zxl1227 + 2 + 1 热心回复!

查看全部评分

马了顶大 发表于 2022-5-24 07:46
 楼主| 一剑飘零 发表于 2022-5-24 08:21
本帖最后由 一剑飘零 于 2022-5-24 08:24 编辑
zxl1227 发表于 2022-5-24 01:48
加一个数据类型if条件判断喽

意思是在后面加一个if((int)ab==1) break?
这样吗? 如果是这样是没用的,我实际都改了几次了。我再试版主的,应该是对的。
 楼主| 一剑飘零 发表于 2022-5-24 08:23
云在天 发表于 2022-5-24 02:00
和类型没关系,其实这是一个比较常见的错误

在你输入不符合指定数据类型的数据时,会强制转化成指定类型 ...

好的,谢谢,我试试。
qqxiazhitmac 发表于 2022-5-24 08:24
别着急慢慢来
hqm2019 发表于 2022-5-24 08:53
支持你撞墙
LiuDaVv 发表于 2022-5-24 09:22
不至于不至于
cghost 发表于 2022-5-24 09:41
难道循环之后不应该加个break跳出循环么……或者是给个重新输入的机会啊……
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 11:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表