| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 753 人关注过本帖
标题:while与printf连用时的一个小问题!
只看楼主 加入收藏
duwn124
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2010-8-10
结帖率:77.78%
收藏
已结贴  问题点数:5 回复次数:4 
while与printf连用时的一个小问题!
程序要实现的是按键盘上任意键,屏幕显示是否为数字
main()
{
    char ch;
    while(1)
    {
        scanf("%c",&ch);
        if(ch>47 && ch<58)
            printf("This is a num!\n");
        else
            printf("This is not a number!\n");
    }
    getch();
}
在运行时如果输入数字,则屏幕会输出以下两行:
This is a num!
This is not a number!
如果输入的是字符,则输出以下两行:
This is not a number!
This is not a number!

这是为什么呢?没搞懂,求真相,谢谢!
搜索更多相关主题的帖子: printf 
2010-08-11 15:53
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:5 
因为输入的时候,回车符会被解释成为一个换行符,所以当你以为输入一个字符的时候,其实读入的是字符加换行符。
改成scanf("%c%*c",&ch);就可以
2010-08-11 16:09
duwn124
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2010-8-10
收藏
得分:0 
回复 2楼 erikyo
多谢高人了,问题解决。
2010-08-11 19:17
sd2930357
Rank: 2
等 级:论坛游民
帖 子:19
专家分:28
注 册:2010-7-25
收藏
得分:0 
输入时加个逗号作为输入结束标记也可以。。
scanf("%c,",&ch);
2010-08-11 21:44
duwn124
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2010-8-10
收藏
得分:0 
回复 4楼 sd2930357
对于第一个数据的测试是OK的,但后面接着输入的话又会遇到上面提到的问题。不过依然感谢你!
我又发现一个办法,可以在scanf语句后加上getchar();用来吸收回车键。
2010-08-13 17:03
快速回复:while与printf连用时的一个小问题!
数据加载中...
 
   



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

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