У меня есть динамический массив структур.Память в 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 пользователях. Иван, Петр и Гриша. Я вызываю метод printAll() и все будет хорошо. {Ivan ....., Peto ...., Grisha ....}
После того, как я могу вызвать метод addNewPacient() (Nazar), и все будет хорошо. {Ivan ....., Peto ...., Grisha ...., Nazar ....} Но когда я удаляю последний элемент из массива, все почти все будет ОКПОЛЬЗОВАТЬСЯ. {Ivan ......, Petro ....., Grisdksaldaskfpwqe ### 221 ......} Элемент прослушивания искажен. Я думаю, что у меня есть проблемы с deleteLastElement(), помощь плз)
где ' объявлены пациенты? Глобальный? –
'Pacient * pacients; ...' нуждается в 'Pacient' ->' struct Pacient'? – kaylum
Я нашел ошибку, в pacient = (Pacient *) realloc (pacients, count * sizeof (Pacient *)); требуется удалить * после Pacient. Senq) –