c中的getchar();吃掉回车什么的情况

我是个菜鸟,这两天写程序呢,这个是我几天在宿舍写的一个程序,就是在输入时的一个问题在输入函数的运行会跳过性别的输入二直接到下一次输入,每次输入都是这样跳过性别的输入,而我在循环里面每个printf后面加上getchar();语句之后结果就好了;好像听老师说过这是用getchar();来吃掉回车什么之类的。但是具体是怎么回事,是什么原因导致这样的我还是没弄懂。希望各位前辈高人们能指点我的迷津。谢谢了!

 

#include <stdio.h>
#define N 3
typedef struct
{
 char Name[15];
 int age;
 char sex;
}  P_message;
void Input(P_message pe[],int n);
void Output(P_message pe[],int n);
main()
{
  P_message people[N];
  Input(people,N);
  Output(people,N);

}
void Input(P_message pe[],int n)
{
   int i;
   printf("input message of people/n");
   for(i=0;i<n;i++)
   {
      printf("Name is:");
      gets(pe[i].Name);
      printf("/n age is:");
      scanf("%d",&pe[i].age);
      printf("/n sex is:");
      pe[i].sex=getchar();
     printf("/n");
     }
}
void Output(P_message pe[],int n)
{
   int i;
   for(i=0;i<n;i++)
    printf("Name:%s/nsex:%c/nage:%d/n",pe[i].Name,pe[i].sex,pe[i].age);
  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值