A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

int main(){

    char a,b;
    scanf("%c",&a);
    scanf("%c",&b);
    return 0;
}
/*
输入 a回车 然后就退出了。

这个问题有很多说法有说是缓冲区没有清除,有说stdin这个流的问题,我也不知道是什么原因,这里介绍一个解决这种问题的方法:
*/
int main(){
    char a,b;
    scanf("%c",&a);
    scanf(" %c",&b);   //注意%c前有空格
    return 0;
}
/*
再编译一下就没有问题了
*/

20 个回复

倒序浏览
为什么是这样的啊
回复 使用道具 举报
李永方 发表于 2015-6-3 13:57
为什么是这样的啊

你记住就行了
回复 使用道具 举报
表示不太懂
回复 使用道具 举报
我前几天也发过类似个帖子 不过那是我自己问的,我那个是一点击运行然后死机,你这样说我试试去!!!
回复 使用道具 举报
a回车 其实已经输入了2个字符 'a'和'\n' 所以第一个程序立刻就结束了 因为已经接收到了2个字符
而第二个程序 scanf寻找了3个字符 a ‘ ’和 b,其实就是用‘ ’吸收了‘\n’,所以能够继续
回复 使用道具 举报
有些东西,真得很难解释啊
回复 使用道具 举报
晗修 发表于 2015-6-3 17:57
a回车 其实已经输入了2个字符 'a'和'\n' 所以第一个程序立刻就结束了 因为已经接收到了2个字符
而第二个程 ...

正解
回复 使用道具 举报
学习学习!
回复 使用道具 举报
6楼解释的很好
回复 使用道具 举报
jx836202365 来自手机 中级黑马 2015-6-4 08:05:50
11#
其实可以再复制一遍scanf输入一个回车,并且用*忽略,希望回车,空格都没有问题
回复 使用道具 举报
加油了 朋友
回复 使用道具 举报
jx836202365 发表于 2015-6-4 08:05
其实可以再复制一遍scanf输入一个回车,并且用*忽略,希望回车,空格都没有问题 ...

这样也可以
回复 使用道具 举报
哪个啥,我说说我的见解,说的不对,不要介意哈,我觉着吧,你的代码之所以退出是因为你用了两个scanf函数的时候,你在输入字符的时候只输了a并只接受了一个a, 因为你的两个%c之间没有任何的区隔,如果你不输入第二个字符的话, 他就接受不了,从而只能接受一个a并打印
当你在第二个%c前加空格的话,那你在屏幕上就输入字符就必须也同时输入空格,你输入一个a按回车的话,也就相当于输入了一个空格,程序并不会退出,因为你第二个scanf的%c前有空格,所以程序等你输入第二个字符,当你输入了第二个字符再按回车程序才会退出;
还有写scanf函数一般都是h写 ---->   sacanf("%c%c", &a, &b);或者sacanf("%c      %c", &a, &b);
注意两个%之间,一个有空格,一个没有空格,当你在屏幕上输入字符时,就必须按照你写代码时两个%c之间有没有空格来输入字符,这样就可以了,
我是图图哟,觉得我说的对的话,记得给好评哟,:lol
回复 使用道具 举报
没那么多为什么 记住就可以了
回复 使用道具 举报
学习学习!
回复 使用道具 举报
说实话,看不懂。。。
回复 使用道具 举报
建议你接收数据时,先来个打印,提示用户输入,然后接收一个数值,再提示,在接受一次,这样自己输入时就能够看到提示文字,不会出现这些问题
回复 使用道具 举报
学习学习!
回复 使用道具 举报
学习学习,欢迎前辈前来讨论
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马