Arrays 将结构数组插入链表

Arrays 将结构数组插入链表,arrays,c,struct,linked-list,Arrays,C,Struct,Linked List,我的链表要求我创建一个struct数组,其中包含一个人名(定义为4个字符的名称)以及此人与我的距离 创建3个数组元素后,我将每个人及其距离放入一个链表中 我已经制作了阵列并成功地按原样打印了它,但在制作列表时遇到了问题 我的代码如下所示,非常感谢您提供一个解决方案来启动并运行代码 typedef struct Node { int dist; char name[4]; struct Node* next; }Node; void main() { in

我的链表要求我创建一个struct数组,其中包含一个人名(定义为4个字符的名称)以及此人与我的距离

创建3个数组元素后,我将每个人及其距离放入一个链表中

我已经制作了阵列并成功地按原样打印了它,但在制作列表时遇到了问题

我的代码如下所示,非常感谢您提供一个解决方案来启动并运行代码

    typedef struct Node
{
    int dist;
    char name[4];
    struct Node* next;
}Node;

void main()
{
    int i;
    Node arr[3];

for (i = 0; i < 3; i++)
{
    printf("Enter name: \n");
    scanf("%s", arr[i].name);

    printf("Enter distance: \n");
    scanf("%d", &arr[i].dist);
}
printf("Basic printing of the ARRAY:");
for (i = 0; i < 3; i++)
{
    printf("Distance of %s is: %d\n", arr[i].name, arr[i].dist);
}

printf("\n\n\n");
Node* head;
Node* tail;
head = tail = NULL;
head = malloc(sizeof(Node));
tail = malloc(sizeof(Node));
for (i = 0; i < 3; i++)
{
    if (i == 0)
    {
    
        head->dist = arr[i].dist;
        head->name[4] = arr[i].name;
        tail = head;
    }
    else
    {
        tail->next = malloc(sizeof(Node));
        tail = tail->next;
        tail->next = NULL;
        tail->dist = arr[i].dist;
        tail->name[4] = arr[i].name;
    }
}
Node* temp;
temp = head;
printf("Now we print the list\n");
for (i = 0; i < 3; i++)
{
    printf("Distance of %s is: %d\n", temp->name, temp->dist);
    temp = temp->next;
}
typedef结构节点
{
国际区;
字符名[4];
结构节点*下一步;
}节点;
void main()
{
int i;
节点arr[3];
对于(i=0;i<3;i++)
{
printf(“输入名称:\n”);
scanf(“%s”,arr[i].name);
printf(“输入距离:\n”);
scanf(“%d”,&arr[i].dist);
}
printf(“数组的基本打印:”);
对于(i=0;i<3;i++)
{
printf(“%s的距离为:%d\n”,arr[i].name,arr[i].dist);
}
printf(“\n\n\n”);
节点*头;
节点*尾部;
头=尾=空;
head=malloc(sizeof(Node));
tail=malloc(sizeof(Node));
对于(i=0;i<3;i++)
{
如果(i==0)
{
head->dist=arr[i]。dist;
head->name[4]=arr[i]。名称;
尾=头;
}
其他的
{
tail->next=malloc(sizeof(Node));
tail=tail->next;
tail->next=NULL;
尾部->距离=arr[i]。距离;
tail->name[4]=arr[i]。name;
}
}
节点*温度;
温度=水头;
printf(“现在我们打印列表\n”);
对于(i=0;i<3;i++)
{
printf(“%s的距离为:%d\n”,临时->名称,临时->距离);
温度=温度->下一步;
}
我找到了一个解决办法。 将名称输入列表时,正确使用strcpy

right way:
strcpy(tail->name, arr[i].name)

wrong way (what I used):
tail->name[4]=arr[i].name;