如何为结构中的字符指针分配值并以队列形式存储它

问题描述 投票:0回答:1

这是我的代码在队列中插入字符后,如果我弹出元素,字符(名称和优先级)将显示我输入的最新数据,先前的数据将被删除。

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

int NAME = 20;
int num = 1001;

typedef struct patient { 
    int age; 

    char *name;
    char *priority; 

    struct patient* next; 

} Patient; 

Patient* newPatient(int age, char *p, char *name) 
{ 
    Patient* temp = (Patient*)malloc(sizeof(Patient)); 
    temp->age = age; 
    temp->priority = p; 
    temp->next = NULL; 
    temp->name = name;
    //strcpy(temp->name,name);
    printf("name is%s",temp->name);
    printf("priority is%s",temp->priority);

    return temp; 
} 

void addPatient(Patient** head, int age, char *p, char *name) 
{ 
    Patient* start = (*head); 
    Patient* temp = newPatient(age, p, name);

    if (atol((*head)->priority) < age) { 

        temp->next = *head; 
        (*head) = temp; 
    } 
    else { 

        while (start->next != NULL && 
            atol(start->next->priority) < age) { 
            start = start->next; 
        } 

        temp->next = start->next; 
        start->next = temp; 
    } 
} 

我是新手,请帮忙

c
1个回答
0
投票

问题出在Patient* newPatient(int age, char *p, char *name)中:您没有为priorityname分配新的内存。您要么始终为pname指向的priorityname传递新分配的内存,要么为priority中的namenewPatient()分配新的内存,然后执行[C0 ]

© www.soinside.com 2019 - 2024. All rights reserved.