注册 登录
编程论坛 C语言论坛

头疼的问题,关于getchar()和putchar()

Niderhoger 发布于 2019-11-25 12:20, 1453 次点击
/*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;
来跳过剩余的输入行, 其他的可以理解 ,为什么缓冲区内的换行符也能跳过?

1 回复
#2
Niderhoger2019-11-25 21:35
想明白了..
1