scanf 无法给同一变量 赋值两次

问题

(下面有我的解决办法)

(已经解决 是缓冲区的问题  还是自己太菜了 呜呜呜,蓝瘦。。。)

在练习数据结构时,从键盘输入 对同一变量 进行赋值

但是第一次成功,第二次失败并且第二次的代码会直接跳过

我没看源码

请大佬解释一下。。。

跪谢!!!

    int i;
    printf("要进行链表的插入吗  y/n ?  ");
    scanf("%c", &i);
    printf("i 的值: %c\n", i);
    
    i = 'a';
    printf("i 的值: %c", i);

    printf("要进行链表的插入吗  y/n ?  ");
    scanf("%c", &i);
    printf("i 的值: %c", i);

进一步试了试

    int i;
    printf("要进行链表的插入吗  y/n ?  ");
    scanf("%c %c", &i, &i);
    printf("要进行链表的插入吗  y/n ?  ");
    scanf("%c %c", &i, &i);
    printf("要进行链表的插入吗  y/n ?  ");
    scanf("%c %c", &i, &i);
    printf("要进行链表的插入吗  y/n ?  ");
    scanf("%c %c", &i, &i);
    printf("i 的值: %c\n", i);

输出结果:

要进行链表的插入吗  y/n ?  a z
要进行链表的插入吗  y/n ?  s x
要进行链表的插入吗  y/n ?  要进行链表的插入吗  y/n ?  d c
i 的值: d

第三个直接给跳过了

第四个的第一项会赋值给  i

就很奇怪 我还不会看源代码,所以还解决不了。

解决办法:

1  方法一

        当然是曲线救国拉,对特定问题换个思路,不用这种多次scanf赋值

2  方法二

经过我的 阿q 精神探索,找到一种解决办法

上代码:

    char i;
    printf("要进行链表的插入吗  y/n ?  ");
    scanf("%c",&i);
    int n = 0;

    while (i == 'y')
    {
        printf("要进行链表的插入吗  y/n ?  ");
        scanf("%c %c", &i, &i);
        printf("%d", n);
        n++;
    }

你没有看错 !!!

就是将 scanf 的第二次之后赋值写双份  

scanf("%c %c", &i, &i);

好 tm 神奇!!!

刚有大佬回答了我的问题,我先去看看。。。风紧扯呼。。。

最佳回答

在社区问答里,有大佬解答了,是缓冲区没有清理

虽然我刚开始也是往这方面想,但知识有限。

下面链接 自己去看看吧 呜呜呜。。。

scanf无法赋值两次,如何解决?(相关搜索:数据结构)_编程语言-CSDN问答

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值