Во-первых, несколько вещей, которые следует избегать, чтобы сделать код более читабельным и более легким для отладки:
Autos *pointerCar, Cars;
- не делайте этого, это ухудшает читабельность. Я предполагаю, что вы хотели объявить два указателя: pointerCar
- для одного автомобиля и cars
для множества автомобилей. В вашем коде вы объявляете указатель pointerCar
и переменную Cars
.
Установите одно соглашение об именах и придерживайтесь его. Если вы используете CamelCase для типов, не используйте его для переменных (вместо этого используйте camelCase или snake_case). Не используйте множественное число для типов. Я бы написал так:
Auto *single_car;
Auto *cars;
Используйте calloc
для инициализации структуры и массива, поскольку он заполняет выделенную память нулями, что удобно.
cars = (Auto*) calloc(5, sizeof(Auto));
А теперь выпуск
Вы теряете свой последний ввод, потому что каждый раз, когда вы вызываете функцию scanCars
, вы передаете один и тот же указатель снова и снова. Ваш *pointerCar
указывает на массив из 5 Auto, затем вы заполняете его данными в scanCars
и возвращаетесь из функции. В следующий раз, когда вызывается scanCars
, ему передается тот же указатель в качестве аргумента, и данные перезаписываются.
В общей сложности у меня будет 15 автомобилей, но на каждом АВТОС будет 5 машин;
Что-то здесь не так. У вас есть только один определенный тип: Autos
(который должен быть просто Auto
). Если вы выделите место для 5 Autos, вы получите указатель на память, подготовленную для хранения 5 структур Auto, и ничего более.
Если вы хотите сгруппировать ваши Autos в какой-то гипотетический гараж, вы должны создать таблицу указателей на Auto (или просто сказать: таблица таблиц Auto). Например:
Auto *garage[3];
garage[0] = (Auto*) calloc(5, sizeof(Auto));
garage[1] = (Auto*) calloc(5, sizeof(Auto));
garage[2] = (Auto*) calloc(5, sizeof(Auto));
И теперь каждый элемент garage
содержит массив из 5 Autos. Чтобы получить доступ к машине в гараже, вы напишите: garage[1][0].year
.
Теперь вы можете передать вам гараж scanCars
Функция: scanCars(garage[0])
. Не забудьте настроить цикл for в scanCars
, потому что он настроен на заполнение только 2 автомобилей и теперь должен иметь 5.