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

请问在这里getchar的作用是什么

komorebi0110 发布于 2019-11-25 18:09, 1426 次点击
#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");
        }
}
5 回复
#2
komorebi01102019-11-25 18:10
如果去掉getchar(),后面没有判断就直接进入else语句了,为什么啊
#3
纯蓝之刃2019-11-25 18:31
因为你在scanf("%d",&day);时,输入了( 1 回车 )两个字符,但是scanf("%d",&day);只读取了1这个字符,‘回车’字符还留在缓存区中。getchar();就是将缓存区中的‘回车’字符取出并丢弃,相当清空缓存区。
如果没有getchar();。‘回车’字符还留在缓存区中,当scanf("%c", &raining);时,从缓存区中读取的第一个字符就是‘回车’,‘回车’不为'Y',所以就到else了。
#4
komorebi01102019-11-25 18:36
回复 3楼 纯蓝之刃
明白了,非常感谢!!
#5
komorebi01102019-11-25 18:38
回复 3楼 纯蓝之刃
可是为什么scanf("%c",&raining)时不先输入,反而是用缓存区里的值呢
#6
komorebi01102019-11-25 19:13
明白了
1