为什么老师说这样赋值会使存入的地方乱套?不理解
#include<stdio.h> #include<string.h>
#include<stdlib.h>
#include<math.h>
#define MAXSIZE 200
#define MAI 20
typedef int TElemType;
///////////////////////////////
////////////////////////////
typedef struct node//结构体变量
{
char name[MAI]; //姓名
int dirthtime; //[MAI];//出生日期
int deathtime[MAI]; //死亡日期
char sex; //性别,男为M,女为W
char homeplace[ MAXSIZE ]; //出生地
char homeaddress[ MAXSIZE ];//家庭住址
char occuption[MAI]; //职业
char resume[MAXSIZE]; //简历
int i; //辈分
}node;
///////////////////////////////
////////////////////////////
typedef struct scnode//孩子兄弟表示法
{
struct node l;
struct scnode *child;
struct scnode *brother;
}scnode;
scnode *firshrood()//建立第一个祖先
{
scnode *data;
data=(scnode *)malloc(sizeof(scnode));//分配存储空间
printf("输入祖先名字:");
scanf("%s",data->l.name );
printf("输入祖先出生日期:");
scanf("%d",&data->l.dirthtime );
printf("输入祖先死亡日期:");
scanf("%d",data->l.deathtime );
printf("输入祖先性别:");
scanf("%s",&data->l.sex );
printf("输入祖先出生地:");
scanf("%s",data->l.homeplace );
printf("输入祖先家庭住址:");
scanf("%s",data->l.homeaddress );
printf("输入祖先职业:");
scanf("%s",data->l.occuption );
printf("输入祖先简历:");
scanf("%s",data->l.resume );
data->l.i =1;
printf("家祖载入成功\n");
data->child =NULL;
data->brother =NULL;
return data;
}