| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 608 人关注过本帖
标题:好奇怪的问题。...谁解决下
只看楼主 加入收藏
zhouy1989
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-7-20
结帖率:0
收藏
已结贴  问题点数:20 回复次数:7 
好奇怪的问题。...谁解决下
好奇怪的问题。...谁解决下  
 先看程序里的一段
printf("                 ***-**-**-**-**-**-**-**-**-**-**-***\n");
printf("                 * welcome!What can I do for you?    *\n");
    printf("                 *                                   *\n");
printf("                 * 1.Buy a thing.                    *\n");
printf("                 * 2.Look for.                       *\n");
    printf("                 * 3.Settings(only for administrator)*\n");
printf("                 *                                   *\n");
printf("                 ***-**-**-**-**-**-**-**-**-**-**-***\n");
printf("Please chose  :");
scanf("%d",&chose);
switch(chose)
{
        case 1:buy();break;
case 2:chakan();break;
        case 3:guanli();break;
        default:printf("ERROR,press any key to continue\n");getch();main();
}
}

一个选择菜单的问题。 现在的问题是:输入错误时,就是输入1,2,3以外的.数字可以提示错误并返回重输(如4-9),但字母和特殊符号就会无限循环提示错误,不给重输的机会...
在网上查到2种方法1.是在scanf前加fflush(stdin);  清除缓寸
2是写成 scanf("% d",&chose); 都无效...
谁能解决下。程序里的所有选单都有这个问题..
搜索更多相关主题的帖子: welcome 
2009-07-20 10:33
战龙
Rank: 2
等 级:论坛游民
帖 子:37
专家分:17
注 册:2008-4-2
收藏
得分:3 
#include <stdio.h>
#include <stdlib.h>

int main()
{
int chose=0;
printf("                 ***-**-**-**-**-**-**-**-**-**-**-***\n");
printf("                 * welcome!What can I do for you?    *\n");
    printf("                 *                                   *\n");
printf("                 * 1.Buy a thing.                    *\n");
printf("                 * 2.Look for.                       *\n");
    printf("                 * 3.Settings(only for administrator)*\n");
printf("                 *                                   *\n");
printf("                 ***-**-**-**-**-**-**-**-**-**-**-***\n");
printf("Please chose  :");
scanf("%d",&chose);
switch(chose)
    {
        case 1:printf("111\n");break;
    case 2:printf("222\n");break;
        case 3:printf("333\n");break;
        default:printf("ERROR,press any key to continue\n");
    getchar();
    main();
    }
}

经测试,没问题。。。。
2009-07-20 15:43
mfh
Rank: 6Rank: 6
等 级:侠之大者
帖 子:179
专家分:411
注 册:2009-5-31
收藏
得分:3 
没有问题!
2009-07-20 16:57
ljt0000mf
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:104
专家分:157
注 册:2009-7-4
收藏
得分:3 
大家都说没问题,就是程序没有问题,那就是编辑器的原因了
2009-07-20 19:37
uubird
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:74
专家分:133
注 册:2009-7-2
收藏
得分:3 
#include <stdio.h>
#include <stdlib.h>

int main()
{
int chose=0;
do{
printf("                 ***-**-**-**-**-**-**-**-**-**-**-***\n");
printf("                 *   welcome!What can I do for you?  *\n");
printf("                 *                                   *\n");
printf("                 * 1.Buy a thing.                    *\n");
printf("                 * 2.Look for.                       *\n");
printf("                 * 3.Settings(only for administrator)*\n");
printf("                 * 4.over inputing!                 *\n");
printf("                 ***-**-**-**-**-**-**-**-**-**-**-***\n");
printf("Please chose  :");
scanf("%d",&chose);
switch(chose)
    {
        case 1:printf("111\n");break;
        case 2:printf("222\n");break;
        case 3:printf("333\n");break;
        case 4:break;
        default:printf("ERROR,press any key to continue\n");
    fflush(stdin);//或者getchar();都可以!
    }
if(chose==4) break;
}while(1);
}
2楼循环我这里运行不出来,我也不知道是怎么回事!!后来想了下,是不是主函数不能循环嵌套啊!!
2009-07-20 19:42
prankmoon
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:161
专家分:921
注 册:2009-7-21
收藏
得分:3 
C的函数可以递归,main函数也不例外。
2009-07-21 05:13
himpo
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:192
专家分:123
注 册:2008-5-16
收藏
得分:3 
我晕..

你在scanf("%d",&chose); 这句后面加一句
while(getchar()!='\n');  //清除缓存区.

应该就可以了..
2009-07-21 08:00
战龙
Rank: 2
等 级:论坛游民
帖 子:37
专家分:17
注 册:2008-4-2
收藏
得分:0 
不知楼主咋搞的,我在redhat和vc6上都没问题呀
2009-07-21 14:01
快速回复:好奇怪的问题。...谁解决下
数据加载中...
 
   



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

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