| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1482 人关注过本帖
标题:C语言新手, 求大神解答关于scanf缓存区的问题
取消只看楼主 加入收藏
luanyu666
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-6-15
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
C语言新手, 求大神解答关于scanf缓存区的问题
最近刚开始用scanf 发现了缓存区有几个问题 求大神解答
第一个程序
char l;
    while (!islower(l))
   {
        printf("Please enter a letter:");
        scanf("%c",&l);
        setbuf(stdin,NULL);
   }
当我不加最后一行清理缓存的话,如果我输入了A等大写字母,会打印两次Please enter a letter:。 这是因为\n被读入了缓存区吗?那为什么两次之后就又可以输入了?

第二个程序
a=0;
while (a == 0)
    {
        printf("Please input the coefficient of the x^2, x and constant.\n");
        printf("Please divide them by commas:");
        scanf("%f,%f,%f",&a,&b,&c);
    }
这里我感觉和上面一个程序差不多,但是如果我a输了等于0, 不用清理缓存区还是能够在下一次循环就能输入。这又是为什么?就算是
scanf("%f",&a);也是每一次循环都可以输入?
求大神解答!谢谢~
搜索更多相关主题的帖子: letter C语言 电子 服装 
2015-06-15 20:10
luanyu666
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-6-15
收藏
得分:0 
回复 2楼 hjx1120
我感觉1和2程序都差不多。。为什么2就不用清理了?谢啦~
2015-06-15 20:26
luanyu666
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-6-15
收藏
得分:0 
回复 4楼 hjx1120
额不好意思,可能是我没有讲清楚,我想问的问题是为什么1和2差不多,但是如果我的输入不符合条件,2在下一次循环就能再次输入但是1会在两次循环之后才能输入。。谢
2015-06-15 20:38
luanyu666
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-6-15
收藏
得分:0 
回复 7楼 林月儿
懂了,谢谢
2015-06-15 20:56
luanyu666
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-6-15
收藏
得分:0 
回复 10楼 取名字
恩懂了谢啦~
2015-06-19 00:08
快速回复:C语言新手, 求大神解答关于scanf缓存区的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047177 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved