私は次の構造体を持っています:
struct PList{
Person value;
PList* next;
}
と
struct Person{
char name[100];
PersonID ID;
float amountOwed;
}
と
struct PersonID{
int number;
char letter;
}
メインメソッドで:
Person n;
// n is inputted from the user
addPersonToList(&n, &customers); //customers is a PList
これは addPersonToList のコードです。
void addPersonToList(Person* p, PList* pdb) {
PList* db;
db = pdb;
while (db->next != NULL ) {
db = db->next;
}
PList a;
a = createNewPList(); // this simply assigns next to NULL and value to an empty Person
a.value = *p;
memcpy(db->next,&a,sizeof(PList)+sizeof(Person)+sizeof(PersonID));
}
ここに createNewPList があります
PList createNewPList() {
PList a;
a.next = NULL;
a.value = constructPerson("", constructPersonID(' ', 0), 0);
return a;
}
問題 1 未解決 addPersonToList メソッドが呼び出されると、Person のすべての値が p->Id.number を除いて正しく渡されます。これは、メソッド呼び出しの前とメソッド呼び出しの後で完全に混同されます。
問題 2私が試した memcpy の代わりに解決済み db->next = a; すべての値を手動で割り当てるだけでなく、ただし、その行でプログラムがクラッシュしています。原因は db->next が現在 NULL であると想定しています
エラーに関しては、エラーは表示されません。プログラムは単にクラッシュします。
解決策をありがとう