问题
(下面有我的解决办法)
(已经解决 是缓冲区的问题 还是自己太菜了 呜呜呜,蓝瘦。。。)
在练习数据结构时,从键盘输入 对同一变量 进行赋值
但是第一次成功,第二次失败并且第二次的代码会直接跳过
我没看源码
请大佬解释一下。。。
跪谢!!!
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 神奇!!!
刚有大佬回答了我的问题,我先去看看。。。风紧扯呼。。。
最佳回答
在社区问答里,有大佬解答了,是缓冲区没有清理
虽然我刚开始也是往这方面想,但知识有限。
下面链接 自己去看看吧 呜呜呜。。。