我需要以下代码的帮助。
typedef struct orders
{
int quantity;
char foodname[50];
} ORDER;
ORDER *ptr;
typedef struct Table
{
int tableno;
int priority;
ORDER *orders;
struct Table *next;
} TABLE;
TABLE *head, *s;
int n = 0;
int insert(int tablenum, int prio, char foodname[], int qty)
{
TABLE *newO, *temp, *temp2;
newO = (TABLE*)malloc(sizeof(TABLE));
newO->tableno = tablenum;
newO->priority = prio;
strcpy(newO->orders->foodname, foodname);
newO->orders->quantity = qty;
//more code here...
}
在该程序的主要功能中,将询问用户他们想要订购的食品的餐馆编号,优先级编号,名称以及他们订购的食品的数量。
此代码还有一个showlist函数,它将打印出列表中从最高优先级到最低优先级的所有数据。
现在我的问题是,例如我已经有两个不同的交易,会发生的是我的第二个交易复制了我的第一笔交易的“foodname”和“quantity”。
请帮帮我们。
答案 0 :(得分:2)
TABLE *newO = (TABLE*)malloc(sizeof(TABLE));
为TABLE
分配内存,但不为orders
分配内存,malloc
调用后只是一个未初始化的指针,所以这一行:
newO->orders->quantity = qty;
调用未定义的行为。您还需要为订单分配内存,例如:
TABLE *newO = (TABLE*)malloc(sizeof(TABLE));
newO->orders = (ORDER*)malloc(10*sizeof(ORDER));
...
newO->orders[0]->quantity = qty;
...虽然说实话,很难说orders
是否真的是一个数组。