我已經通過論壇搜索了一段時間,但似乎無法解決此問題。它編譯並完成了我需要它做的幾乎所有事情,但有一件事是關閉的。每當我更新一個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
在我的主要功能,它本質上是給予,不能改變,它調用一個函數initiali zes chorelist並分配內存給每個成員的chorelist結構,以便我可以給每個成員分配值和字符串。 我的問題是,在每次調用函數後都會替換雜項的名稱,該函數將採用已建立的雜項列表。
我的任務陳述在addChoreToLast off?在此先感謝
'的memcpy(pChoreList,chore_list,的sizeof(結構_chorelist *)+的sizeof(結構_chore *)+ 1);'你忘由數乘以的佔用插槽。順便說一句:realloc()在這種情況下更容易。 – wildplasser
確實,realloc是必要的:你應該釋放舊的列表,但是在任何情況下,整個else塊都是混亂和不正確的(你正在設置錯誤的變量)。 –