我有動態的結構數組。C中的內存(陣列結構)
struct Pacient
{
char name[30];
char surname[30];
char middleName[30];
char nationality[30];
float height;
float weight;
char phone[30];
struct Date {
int day;
int month;
int year;
}dateOfBirth;
struct Adress {
char city[30];
char street[30];
int numberOfHouse;
} adress;
struct Hospital {
int numberOfHospital;
char nameOfOffice[30];
int numberOfMedicalCart;
char groupOfBlood[10];
char nameOfDiagnosis[30];
}hospitalInfo;
};
我需要添加,從數組中刪除元素。
Pacient* pacients;
pacients = (Pacient*)calloc(count, sizeof(Pacient));
^我的數組聲明,count - 數組的大小。
我做了func addNewPacient和deleteLastElement。
void addNewPacient() {
count++;
pacients = (Pacient*)realloc(pacients, sizeof(Pacient)*count);
......//many scanf...
}
void removeLastElement() {
count--;
pacients = (Pacient*)realloc(pacients, count * sizeof(Pacient*));
}
首先,我輸入有關(例子)3用戶的信息。 Ivan,Petro和Grisha。 我調用方法printAll(),一切都很好。 {Ivan .....,Peto ....,Grisha ....}
我可以調用方法addNewPacient()(Nazar)後,所有的都會再次罰款。 {Ivan .....,Peto ....,Grisha ....,Nazar ....} 但是當我從數組中刪除最後一個元素時,幾乎所有元素都幾乎沒事。 {Ivan ......,Petro .....,Grisdksaldaskfpwqe ### 221 ......} Penult元素扭曲。 我認爲我有問題,deleteLastElement(),幫助PLZ)
哪裏是' pacients'聲明?全球? –
'Pacient * pacients; ...''需要'Pacient' - >'struct Pacient'? – kaylum
我發現了bug,在pacients =(Pacient *)realloc(pacients,count * sizeof(Pacient *));需要在Pacient之後刪除*。 Senq) –