标题:请问在这里getchar的作用是什么
只看楼主
komorebi0110
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:145
专家分:17
注 册:2019-11-23
结帖率:96.88%
已结贴  问题点数:20 回复次数:5 
请问在这里getchar的作用是什么
#include <stdio.h>

void main (  )
{        int      day;
        char   raining;

        printf("Enter day (use 1 for Sunday)");
         scanf("%d",&day);
        getchar();
         printf( "Is it raining? (Y/N)");
          scanf("%c", &raining);

        if  ( ( day == 1) || (day == 7) )          // Sat or Sun
        {    if  (raining == 'Y')
                 printf( "Read in bed");
            else
                 printf("Have fun outdoors");
        }
        else
        {     printf(  "Go to class ");
             if  (raining == 'Y')
                   printf( "Take an umbrella");
        }
}
搜索更多相关主题的帖子: scanf printf || getchar if 
2019-11-25 18:09
komorebi0110
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:145
专家分:17
注 册:2019-11-23
得分:0 
如果去掉getchar(),后面没有判断就直接进入else语句了,为什么啊

我想要两颗西柚。
2019-11-25 18:10
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:554
专家分:3690
注 册:2019-7-29
得分:20 
因为你在scanf("%d",&day);时,输入了( 1 回车 )两个字符,但是scanf("%d",&day);只读取了1这个字符,‘回车’字符还留在缓存区中。getchar();就是将缓存区中的‘回车’字符取出并丢弃,相当清空缓存区。
如果没有getchar();。‘回车’字符还留在缓存区中,当scanf("%c", &raining);时,从缓存区中读取的第一个字符就是‘回车’,‘回车’不为'Y',所以就到else了。

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2019-11-25 18:31
komorebi0110
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:145
专家分:17
注 册:2019-11-23
得分:0 
回复 3楼 纯蓝之刃
明白了,非常感谢!!

我想要两颗西柚。
2019-11-25 18:36
komorebi0110
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:145
专家分:17
注 册:2019-11-23
得分:0 
回复 3楼 纯蓝之刃
可是为什么scanf("%c",&raining)时不先输入,反而是用缓存区里的值呢

我想要两颗西柚。
2019-11-25 18:38
komorebi0110
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:145
专家分:17
注 册:2019-11-23
得分:0 
明白了

我想要两颗西柚。
2019-11-25 19:13



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




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

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