フォーラムをしばらく検索しましたが、この問題を解決できないようです。コンパイルして、私が必要とするほとんどすべてのことを行いますが、1 つだけ問題があります。構造体 chore へのポインターのポインターである chore_array を更新するたびに、新しい更新によって以前の割り当てがすべて置き換えられます。
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
本質的に与えられ、変更できないメイン関数では、chorelistを初期化し、 chorelist構造体の各メンバーにメモリを割り当てる関数を呼び出して、各メンバーに値と文字列を割り当てることができます。私の問題は、既に確立された日課リストを取り込む関数の呼び出しのたびに、日課の名前が置き換えられることです。
addChoreToLastの割り当てステートメントは無効ですか? 前もって感謝します