我正在玩结构,我写了这个简单的程序,询问用户他们的姓名,性别和出生日期。这一切都很好,除非我添加了名称部分(我在性别和出生日期之后添加了它)。它会跳过性别部分并直接进入出生日期。现在,如果你注释掉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()?的副本,但与之没有任何相似之处。而且那个人没有任何可行的答案。