[英]linked list with pointer variables in struct
I am experiencing problems on linked list with pointer variables inside the struct.我在结构内部带有指针变量的链表上遇到问题。 Everytime when i insert a new visitor data, the previous visitors data will all be changed to the most current visitor data.
每次插入新的访客数据时,以前的访客数据都会更改为最新的访客数据。
struct visitData{
char *SrNo;
char *ticketNo;
char *Name;
char *ID;
};
typedef struct ticket {
struct visitData visitor;
struct ticket *nextPtr;
}tick;
tick *addinfo(tick *previous,char* serial,char* ticketno,char* name,char* id)
{
tick *info = malloc(sizeof(tick));
info->nextPtr = NULL;
info->visitor.SrNo =serial;
info->visitor.ticketNo = ticketno;
info->visitor.Name = name;
info->visitor.ID=id;
if (previous != NULL)
{
previous->nextPtr = info;
}
printf("visitor info has been added: %s %s %s %s",info->visitor.SrNo,info->visitor.ticketNo,info->visitor.Name,info->visitor.ID);
return info;
} }
This should work:这应该工作:
#include <string.h>
tick *addinfo(tick *previous,char* serial,char* ticketno,char* name,char* id)
{
tick *info = malloc(sizeof(tick));
info->nextPtr = NULL;
info->visitor.SrNo = strdup(serial);
info->visitor.ticketNo = strdup(ticketno);
info->visitor.Name = strdup(name);
info->visitor.ID=strdup(id);
if (previous != NULL)
{
previous->nextPtr = info;
}
printf("visitor info has been added: %s %s %s %s \n",info->visitor.SrNo,info->visitor.ticketNo,info->visitor.Name,info->visitor.ID);
return info;
}
The problem was that you weren't allocating memory for your data.问题是您没有为数据分配内存。 Also, be sure to free it when the program ends.
另外,一定要在程序结束时释放它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.