| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 288 人关注过本帖
标题:这个语句遇到getchar()就跳回然后,再执行一次
只看楼主 加入收藏
zxr_fx
Rank: 1
等 级:新手上路
帖 子:28
专家分:7
注 册:2012-11-21
结帖率:80%
收藏
已结贴  问题点数:10 回复次数:3 
这个语句遇到getchar()就跳回然后,再执行一次
就是当第一次输的不是q的时候





程序代码:
void menue(char array[20])//输入菜单指令函数
{   
    void ysxs(char array[20]);

    char x2;
    printf("请输入菜单指令:");
    x2=getchar();
    switch(x2)
    {
    case 'q':ysxs(array);break;

    default:menue(array);break;
    }


}
2012-12-07 23:29
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:10 
menu递归 不太好
建议这样

char menu()
{
     char chr;
     printf("1 做什么;\n"); // 这个输出你的选项和说明
     printf("2 做什么;\n");
     printf("3 做什么;\n");
     printf("q 推出;\n");
     printf("请输入菜单指令:");
     chr=getchar();
     return chr;
}

void main()
{
    char ch;
    while (true) {
        ch = menu();
        if (ch == q) {
            break; // 不放在switch里面去,直接推出循环
        }
        switch(ch) {
            case '1': // 改成你的选项对应的字符
            { \\ to do
            }
            break;
            case '2':
            { \\ to do
            }
            break;
            case '3':
            { \\ to do
            }
            break;
            default:break;
        }
    }
}


[ 本帖最后由 yuccn 于 2012-12-8 00:05 编辑 ]

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-08 00:03
zxr_fx
Rank: 1
等 级:新手上路
帖 子:28
专家分:7
注 册:2012-11-21
收藏
得分:0 
回复 2楼 yuccn
程序代码:
while (true) {
        ch = menu();
        if (ch == q) {
            break; // 不放在switch里面去,直接推出循环
        }
        switch(ch) {
            case '1': // 改成你的选项对应的字符
            { \\ to do
            }
            break;
            case '2':
            { \\ to do
            }
            break;
            case '3':
            { \\ to do
            }
            break;
            default:break;
        }
    }


上面这段的while和switch是不是矛盾了?while 是ch==q才跳出,然后又用switch又来个判断,这时候ch就只能是q了

菜鸟成长中
2012-12-08 11:13
zxr_fx
Rank: 1
等 级:新手上路
帖 子:28
专家分:7
注 册:2012-11-21
收藏
得分:0 
回复 2楼 yuccn
我知道是哪错了,是输完指令后,你还要敲回车作为结束,它把回车也当做一个字符来看了,那么第二次就没有让你getchar()了,
所以要在改成这样
char x2,d;
    printf("请输入菜单指令:");
    x2=getchar();
   d=getchar();

菜鸟成长中
2012-12-08 11:17
快速回复:这个语句遇到getchar()就跳回然后,再执行一次
数据加载中...
 
   



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

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