(C语言)关于函数传参以及字符串问题

在C 语言中,往函数传入字符数组的首元素地址,怎么再将此数组赋值给新的字符数组,代码大概是这样的,大概是哪有问题呢?谢谢啦~

typedef struct LNode
{
    char data[100];
    struct LNode *next;

}LNode,*LinkList;


//在链表末尾增加新的节点,新节点数据域为data
void ListInsert(LinkList* L,char *data)//在这!!!(2)
{
    LinkList temp=*L;
    LinkList p=(LinkList)malloc(sizeof(LNode));

    strcpy(p->data,*data);//在这!!!(3)
    p->next=NULL;
 
    if(*L==NULL)
        *L=p;
    else
    {
        while(temp->next!=NULL)
        {
            temp=temp->next;
        }
        temp->next=p;
    }
}


//链表数据的输入
void ScanData(LinkList L)
{
    char data[100];
    int count=0;
    int num=5;
    while(count<num)
    {

        gets(data);
        ListInsert(&L,data);//在这!!!(1)
    }
}

strcpy(p->data,*data)
改成
strcpy(p->data,data)
data就是字符串, *data后就是第一个字符了