使用链表读入数据却无法输出 但姓名输入数字是又可以输出

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

void caidan();//菜单函数

typedef struct vip
{
int vn;
char name[10];//姓名
char sex[2];//性别
char tel[20];//电话
char age[3];//年龄
//会员号;系统分配
struct stu *next;//指针域,一般起next

} vip;

//创建链表
vip *createANode()
{
int i=0;
vip *p;

p=(struct vip *)malloc(sizeof(vip));//  正常(void *)malloc(sizeof(std));

if(p!=NULL)//判断地址是否为空
{
    printf("请输入客户姓名:");//输入提示
    fflush(stdin);
    gets(p->name);
    printf("请输入客户电话:");
    fflush(stdin);
    scanf("%s",p->tel);
    printf("请输入客户年龄:");
    fflush(stdin);
    gets(p->age);
    printf("请输入客户性别:");
    fflush(stdin);
    gets(p->sex);
    printf("已经录入\n");
    printf("已经为您分配会员号\n");
    printf("客户姓名为:");
    puts(p->name);
    printf("客户电话为:");
    printf("%s\n",p->tel);
    printf("客户年龄为:");
    puts(p->age);
    printf("客户性别为:");
    puts(p->sex);



    p->next=NULL;
}
else printf("创建失败,请重启程序\n");
return p;

}

vip *insertAHead(vip *head,vip * p)
{

if(head==NULL)
{
    head=p;
}
else
{
    if(p!=NULL)
    {
        p->next=head;
        head=p;
    }
}

return head;

}

vip *createAlist()
{
int flag=0;
int i=1,j=1;
vip *p=NULL;
vip *head=NULL;
while(1==i)
{

        fflush(stdin);
        printf("是否要输入用户信息\n输入请输入 1\n没有请输入 0\n");
        fflush(stdin);//清空缓存区
        scanf("%d",&i);



        switch(i)
        {
        case 0:
            break;

        case 1:
            p=createANode();

            head=insertAHead(head,p);
            j++;
            continue;

        default :
            printf("请检查输出");
            continue;

        }





}
return head;

}

void caidan()
{
printf("\t\t------------------------------\t\t\n");

printf("\t\t----欢迎您进入活力老年社区----\t\t\n");

printf("\t\t---- 增 加 会 员 请 输入 1----\t\t\n");

printf("\t\t---- 删 除 会 员 请 输入 2----\t\t\n");

printf("\t\t---- 修 改 会 员 请 输入 3----\t\t\n");

printf("\t\t---- 查 询 会 员 请 输入 4----\t\t\n");

printf("\t\t---- 退 出 系 统 请 输入 0----\t\t\n");

printf("\t\t------------------------------\t\t\n");

}

int main()
{
vip *head;
int flag=0;

caidan();
scanf("%d",&flag);


switch(flag)
{


case 0:
 printf("退出");
 break;

case 1:
    head=createAlist();
    break;
case 2:
    printf("删除");
    break;
case 3:
    printf("修改");
    break;
case 4:
    printf("查询");
    break;
default :
    printf("请检查输入");
    break;

}







return 0;

}

img