请帮小弟我看看为什么这个链表创建不起来

请帮我看看为什么这个链表创建不起来?
下面是一个程序,没有要求显示输出,只是在创建过程中,在黑窗口输入一个数字后就终止了,不知什么原因,我以为至少可以一直输入只要不输入字符。

#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

struct student
{
int age;
};
typedef struct student Student;

typedef struct tree 
{
Student item;
struct tree *next;

}Tree;

void InitializeTree(Tree *head);
void CreateTree(Student item, Tree *head);

int main(void)
{
Student item;
Tree person;

InitializeTree(&person);
while(scanf("%d", &item.age) == 1)
{
rewind(stdin);
       CreateTree(item, &person);
}

return 0;
}

void InitializeTree(Tree *head)
{
head = NULL;
}

void CreateTree(Student item , Tree *head)
{
static Tree *current, *prev;

current = (Tree *)malloc(sizeof(Tree));
current->item = item;
current->next = NULL;
if(head == NULL)
{
head = current;
prev = current;
}
else
{
prev->next = current;
prev = current;
}
}

------解决方案--------------------
请帮小弟我看看为什么这个链表创建不起来

撸主这样是不对的:

Tree person; 
InitializeTree(&person);

InitializeTree函数的实现里面把person搞成了null,所以createTree()里面再访问person就挂了。

Get it?
------解决方案--------------------

 while(scanf(" %d", &item.age) == 1)

//这样试试,
//之前是因为第二次会把第一次输入时的换行符给到age,导致你匹配不正确,退出了while循环!

------解决方案--------------------
引用:
请帮小弟我看看为什么这个链表创建不起来

撸主这样是不对的:

Tree person; 
InitializeTree(&person);