将内容放入链表的时候出错,看半天找不出原因,晕

代码如下,运行结果在最后。输入姓名和年龄的时候是没问题的,可是到输入生日的时候却总是出错,不知道怎么改,还望有好人能指点一下

#include
#define stu_num 2
typedef struct {
    int year;
    int month;
    int day;
}BIR;
typedef struct information{
    char name[20];
    int age;
    BIR birthday;
    /**********************/
    struct information*next;
}INF;
void Into_List(INF**h,INF*i);//链表的创建 
void Put_List(INF*h);//链表的遍历 
int main()
{
    INF *head=NULL,*infm=NULL;
    BIR *birthday=NULL;
    int i;
    for(i=0;imalloc(sizeof(INF));
        birthday=(BIR*)malloc(sizeof(BIR));
        printf("姓名:\n");
        scanf("%s",&infm->name);
        printf("年龄:\n");
        scanf("%d",&infm->age);
        printf("出生日期:\n");
        scanf("%d,%d,%d",&infm->birthday);
        Into_List(&head,infm);        
    }    
    Put_List(head);
    return 0;
}
void Into_List(INF**h,INF*i)//创建链表 
{
    INF*mid;
    mid=*h;
    if(*h==NULL)
    {
        *h=i;
        i->next=NULL;
    }
    else
    {
        while(mid!=NULL)
        {
            mid=mid->next;
        }
        mid->next=i;
        i->next=NULL;
    }
}
void Put_List(INF*h)//遍历链表 
{    INF*mid;
    mid=h;
    while(h!=NULL)
    {
        printf("姓名:%s    年龄:%d    出生日期:%d,%d,%d",mid->name,mid->age,
        mid->birthday); 
    }
}

运行结果

img

scanf("%d,%d,%d",&infm->birthday.year,&infm->birthday.month,&infm->birthday.day);

img