| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 628 人关注过本帖
标题:新手求教个输入输出问题
取消只看楼主 加入收藏
lyanoa
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2009-7-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
新手求教个输入输出问题
int choose(int int);//这是输入个数字,如果数字在范围之类则返回该数字
void prin(void);//这是打印一行字的,没什么意义
int main()
{
    int min=1,max=4;
    int ch;
    prin();
    while((ch=choose(min,max))!=4){
        switch(ch)
        {
            case 1:.....
            ............
         }
     }
    return 0;
}
问题我感觉是主要下面这个函数:
int choose(int m,int n)
{
    int ch;
    if(scanf("%d",&ch)!=1){
       while(ch<m||ch>n){
         prin();
         getchar();
         scanf("%d",&ch);
       }
     }
     return ch;
}
这是我后面改的能运行的,我乱搞的,不过我不能理解,请大家指点下,先谢谢了!!
1:为什么要加个getchar(),不加会死循环,不停的输出prin()(当你输入字母的时候),我知道是scanf()不读换行和回车,和getchar()一起回有问题,
   不过我我自始至终也没用getchar(),不懂
2:我开始是把scanf(“%d",&ch)并到while()里面的,而且我也加了getchar(),但是在运行的时候,先输入字母后,要连续输入2次数字才有反应,这是什么回事?
(问题1在2中也是一样,不加getcgar(),也会死循环)
搜索更多相关主题的帖子: 输出 输入 
2009-07-18 15:23
lyanoa
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2009-7-16
收藏
得分:0 
哦,谢谢,意思是scanf()读取错误,数据还留在缓冲区,以后的scanf()还是读的原来那个数据。
那第2个问题呢,能不能把if(scanf("%d",&ch)并到while()条件里面,我并过,能行,就是会产生相应问题:比如,输入q,就会调用prin(),这没问题。然后重新输入,问题就来了,比如输入1,没反应,再输入1,就能顺利运行了。也就是说每次错误输入调用prin()后,都要连续连续输入2次正确的,才能运行,第一次正确输入是无效的,这是什么原因,麻烦再帮我解释下。谢谢了(里面也加了getchar())
2009-07-18 16:33
lyanoa
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2009-7-16
收藏
得分:0 
谢谢,楼上几位,问题解决了,2楼跟5楼的是正解,名字有点复杂,不太认识,好吧,我承认我是文盲!再次谢谢!
2009-07-29 00:10
快速回复:新手求教个输入输出问题
数据加载中...
 
   



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

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