C程序跳过getchar

时间:2015-05-17 13:52:03

标签: c struct io scanf getchar

我正在玩结构,我写了这个简单的程序,询问用户他们的姓名,性别和出生日期。这一切都很好,除非我添加了名称部分(我在性别和出生日期之后添加了它)。它会跳过性别部分并直接进入出生日期。现在,如果你注释掉scanf的名字,一切正常。

为什么要求用户的名字造成问题?

代码:

#include <stdio.h>
#include <stdlib.h>

struct Customer
{
  char name[20];
  char gender;
  int birthdate;
};

void INT()
{
  struct Customer *who = malloc(sizeof(struct Customer));
  puts("enter your name:");
  scanf("%s", who->name);
  puts("enter gender: M/F");
  who->gender = getchar();
  puts("and birth date:");
  scanf("%d", &who->birthdate);

  printf("You gender is %c and you were born in %d\n", who->gender, who->birthdate);

  free(who);
}

int main()
{
  INT();
  return 0;
}

我的问题被标记为Execution skips getchar() in loop after carriage return and putchar()?的副本,但与之没有任何相似之处。而且那个人没有任何可行的答案。

0 个答案:

没有答案