我有以下结构:
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 UNSOLVED 当调用 addPersonToList 方法时,Person 中的所有值都正确传递,除了 p->Id.number。这在方法调用之前和方法调用之后完全混淆了。
解决了问题 2 而不是我尝试的 memcpy db->next = a ; 以及手动分配所有值。但是在那条线上程序正在崩溃,我假设导致 db->next 当前为 NULL
至于错误,没有错误显示。该程序只是崩溃。
感谢您提供任何解决方案