| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 599 人关注过本帖, 1 人收藏
标题:请大家帮我看看:输入字母则陷入死循环
只看楼主 加入收藏
zhiyanzhai33
Rank: 2
等 级:论坛游民
帖 子:50
专家分:15
注 册:2009-7-30
结帖率:66.67%
收藏(1)
已结贴  问题点数:20 回复次数:4 
请大家帮我看看:输入字母则陷入死循环
就下面这段代码,目的是要求使用者输入1-5的选项,如果输入错误则返回重新输入
实际效果是:如果输入错误的数字则正常返回,如果输入字母或中文,则陷入死循环,跳过输入语句(scanf),直接开始if语句!
请大家帮忙分析下是什么原因,谢谢大家!
程序代码:
//当输入非数字字符时会陷入死循环
#include <stdio.h>
main()
{
    int num;

    input:
        printf("请输入1-5之间的数:\n\n");
        scanf("%d",&num);
   
        //下面的if语句用来防止使用者输入无效选项:
        if(num<1||num>5)                             
        {
            printf("\n输入有误,任意键继续\n\n");
            getch();
            goto input;
        }
    printf("您输入的是: %d\n",num);

}

搜索更多相关主题的帖子: 输入 字母 
2010-04-28 20:02
lgj228
Rank: 2
等 级:论坛游民
帖 子:1
专家分:10
注 册:2010-4-11
收藏
得分:10 
试试用getchar()
然后 需要数字的话 可以转
要么 就判断 ‘1’ ‘5’
2010-04-28 20:11
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
收藏
得分:5 
#include <stdio.h>
main()
{
    int num;
    printf("请输入1-5之间的数:\n\n");
    scanf("%d",&num);
    //下面的if语句用来防止使用者输入无效选项:
    while(num<1||num>5)                             
    {
         printf("\n输入有误,任意键继续\n\n");
         getchar();
         scanf("%d",&num);
     }
    printf("您输入的是: %d\n",num);
    return 0;
}
2010-04-28 20:45
夏日清风
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:71
专家分:126
注 册:2010-4-16
收藏
得分:5 
#include <stdio.h>
main()
{
    int num;

    input:
        printf("请输入1-5之间的数:\n\n");
        scanf("%d",&num);
   
        //下面的if语句用来防止使用者输入无效选项:
        if(num<1||num>5)                             
        {
            printf("\n输入有误,任意键继续\n\n");
            getch();//这句话和上一句红笔标注的地方重了
            goto input;
        }
    printf("您输入的是: %d\n",num);

}
2010-04-28 21:29
zhiyanzhai33
Rank: 2
等 级:论坛游民
帖 子:50
专家分:15
注 册:2009-7-30
收藏
得分:0 
谢谢大家,新手分数不多,聊表心意
2010-04-30 17:58
快速回复:请大家帮我看看:输入字母则陷入死循环
数据加载中...
 
   



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

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