| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1828 人关注过本帖
标题:运行一次,怎么会出现两个啊are you pig?求助~~
只看楼主 加入收藏
luoye1994
Rank: 2
等 级:论坛游民
帖 子:57
专家分:58
注 册:2015-6-29
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
运行一次,怎么会出现两个啊are you pig?求助~~
#include <stdio.h>
int main()
{
    char t ;
L1:    printf("are you pig?\n");
//    scanf("%c" , &t );
    while (1)
    {
        if((t = getchar()) != 'Y')
            goto L1;
        else
            break;
    }
    return 0 ;
}
2015-07-27 12:01
luoye1994
Rank: 2
等 级:论坛游民
帖 子:57
专家分:58
注 册:2015-6-29
收藏
得分:0 
运行结果就是这个:
are you pig?
n
are you pig?
are you pig?
d
are you pig?
are you pig?
Y
Press any key to continue

[ 本帖最后由 luoye1994 于 2015-7-27 13:47 编辑 ]
2015-07-27 13:46
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:4 
楼主木有处理缓冲区问题,,
2015-07-27 13:49
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
就算清除缓冲区,楼主的代码也是。。。。自己体会
#include <stdio.h>
int main()
{
    char t ;
    L1:    printf("are you pig?\n");
    fflush(stdin);
    scanf("%c" , &t );
    while (1)
    {
        if((t = getchar()) != 'Y')
            goto L1;
        else
            break;
    }
    return 0 ;
}
2015-07-27 14:37
luoye1994
Rank: 2
等 级:论坛游民
帖 子:57
专家分:58
注 册:2015-6-29
收藏
得分:0 
getchar 跟scanf不能同用,或者把getchar改为putchar:
#include <stdio.h>
int main()
{
    char t;
L1:    printf("are you pig?\n");
//    scanf("%c" , &t );
    while (1)
    {
        if((t = getchar()) != 'N')
    {
        fflush(stdin);   
            goto L1;
    }
        else
            break;
    }
    return 0 ;
}
这样就好了!
谢了
2015-07-27 15:10
ninyuxin
Rank: 1
等 级:新手上路
帖 子:1
专家分:4
注 册:2015-7-27
收藏
得分:4 
回复 楼主 luoye1994
你写错了,开头你定义的是字符,应该用字符串
#include<stdio.h>
#include<math.h>
main()
{
    char id[10];
    char yd[]="yes";
    int i;
loop: printf("are you pig?\n");
    gets(id);
    if((i=strcmp(id,yd))!=0)
    {
        goto loop;
    }
    else
        printf("good\n");
    return 0;
}
2015-07-27 18:55
w906414
Rank: 2
等 级:论坛游民
帖 子:75
专家分:76
注 册:2015-5-29
收藏
得分:4 
getchar()实际获取的是你是你输入的回车,然后就跳到L1了。
2015-07-27 19:30
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:4 
需要处理一下缓冲区,一般是用getchar()吸收回车.

代码测试环境:  WinXP+C-Free5.0.
2015-07-27 19:45
yx1998
Rank: 2
等 级:论坛游民
威 望:1
帖 子:30
专家分:35
注 册:2015-7-24
收藏
得分:4 
何必用goto呢,看得我好不爽

静心学习,远离浮躁。
2015-07-27 19:52
快速回复:运行一次,怎么会出现两个啊are you pig?求助~~
数据加载中...
 
   



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

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