У меня есть задача составить программу проката автомобилей, которая использует связанные списки для контроля того, какие автомобили можно арендовать, арендовать или ремонтировать.«Автомобиль» - это структура, а также арендованный список, доступный список и список ремонта.
Вот моя текущая проблема.Если пользователь хочет сделать новый автомобиль доступным, мы должны добавить его в наш список всех возможных автомобилей, и мы должны добавить его в список доступных автомобилей.
У меня нет проблем с добавлением его в списокавтомобилей, но когда мне нужно добавить его в список доступных автомобилей, я получаю ошибку сегментации.
Я сейчас предоставлю код:
typedef struct vehicles
{
char idNum[20];
int miles;
int rDate;
struct vehicles *nextCar;
}car;
typedef struct list
{
car * aCar;
struct list *nextCar;
} carList;
Список всех автомобилей:
car * carHead, * carCur;
Список всех доступных автомобилей:
carList * availHead, * availCur;
Оба инициализируются как NULL.
Затем я создаю новый автомобиль и вставляю данные, которые пользователь дал мне (пробег и идентификационный номер)
carCur = (car *)malloc(sizeof(car));
//set ID, Mileage
for(k=0;k<=19;k++)
{
carCur->idNum[k] = idNum[k];
}
carCur->miles = miles;
carCur->nextCar = NULL;
Это прекрасно работает.Я вызываю функцию, которая фактически добавляет его в список, все хорошо.
Затем я создаю новую структуру carList для добавления в список доступных автомобилей.
availCur = (carList *)malloc(sizeof(carList));
//set ID, Mileage
for(k=0;k<=19;k++)
{
availCur->aCar->idNum[k] = idNum[k];
printf("assigned\n");
}
availCur->aCar->miles = miles;
availCur->nextCar = NULL;
После некоторого тестированияиспользуя операторы printf (которые для краткости не включены здесь), я обнаружил, что в этом выражении возникает ошибка сегмента.
availCur->aCar->idNum[k] = idNum[k];
Я надеюсь, что кто-то может сказать мне, почему это назначение приводит к ошибке сегмента.Я проверил idNum
, предоставленный пользователем, хорошо, и он работает для добавления в список всех автомобилей, поэтому я не уверен, что не так.
Я ценю помощь!