标题:头疼的问题,关于getchar()和putchar()
只看楼主
Niderhoger
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2019-11-3
结帖率:100%
 问题点数:0 回复次数:1 
头疼的问题,关于getchar()和putchar()
/*guess.c--一个拖沓且错误的猜数字程序*/
#include <stdio.h>
int main(void)
{
    int guess = 1;
    char response;

    printf("选一个1到100的整数,我会尽力猜出来的.\n");
    printf("如果我的猜测是对的,用y回答;如果我的猜测是错的,用n回答.\n");
    printf("Uh.你的数字是%d?\n", guess);
    while ((response = getchar()) != 'y')    //获取相应
    {
        if (response == 'n')
            printf("那么,是%d?\n", ++guess);
        else
            printf("对不起,我只识别n或y.\n");
        while (getchar() != '\n')
            continue;         //跳过剩余的输入行
    }
    printf("我知道我可以做到!\n");

    return 0;
}

在这个程序中有两个getchar()
假如我输入的是123[enter](按下enter键)
那么在缓冲区内存储的就是 123 和一个换行符

然后第一个getchar()识别1并赋给response, 那么进入循环后的getchar()是拿1和'\n'比还是用2来比?

还有一个问题是它用
while (getchar() != '\n')
            continue;
来跳过剩余的输入行, 其他的可以理解 ,为什么缓冲区内的换行符也能跳过?

搜索更多相关主题的帖子: while response 头疼 printf getchar 
2019-11-25 12:20
Niderhoger
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2019-11-3
得分:0 
想明白了..
2019-11-25 21:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-498065-1-1.html




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

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