我已经在论坛中搜索了一段时间,但似乎无法解决此问题。它编译并完成了我需要它做的几乎所有事情,但有一件事是关闭的。每当我更新 chore_array 时,它是指向 struct chore 的指针的指针,新的更新会替换所有以前的分配。
typdef struct _chore{
char *chore_name;
int number;
char *due_date;
}chore;
typedef struct _chorelist{
chore **chore_array;
int occupied_number;
int size_of_array;
}chorelist;
void addChoreToLast(chorelist *chore_list,chore *chore_input)
{
if(chore_list->occupied_number < chore_list->size_of_array)
{
chore_list->chore_array[chore_list->occupied_number]=chore_input;
chore_list->occupied_number++;
}
else
{
chorelist *pChoreList = (struct _chorelist*)malloc(sizeof(struct _chorelist)*chore_list->occupied_number);
memcpy(pChoreList,chore_list,sizeof(struct _chorelist*)+sizeof(struct _chore*)+1);
pChoreList = chore_list;
pChoreList->chore_array[pChoreList->occupied_number]=chore_input;
pChoreList->occupied_number++;
}
代码输入:
Enter chore name : Dishes
Enter chore number : 1
Enter Date to complete: 04/21/2013
Enter another chore : Sweeping
Enter chore number : 4
Enter Date to complete: 05/02/2013
代码输出:
Entered Chores are : Sweeping, Chore Number: 1, Date: 04/21/2013
Sweeping, Chore Number: 4, Date: 05/02/2013
期望的输出:
Entered Chores are : Dishes, Chore Number: 1, Date: 04/21/2013
Sweeping, Chore Number: 4, Date: 05/02/2013
在我的 main 函数中,它本质上是给定的并且不能更改,它调用一个函数来初始化chorelist并为chorelist结构的每个成员分配内存,以便我可以为其每个成员分配值和字符串。我的问题是,每次调用函数后,杂项的名称都会被替换,该函数包含一个已经建立的杂项列表。
我在addChoreToLast中的赋值语句是否关闭?提前致谢