我有制定汽車租賃計劃的任務,該計劃使用鏈接列表來控制可租用的汽車,出租或正在修理中。 '汽車'是一個結構,租賃清單,可用清單和修理清單也是如此。鏈接列表,分配字符數組[C]
繼承人我當前的問題。如果用戶想要提供新車,我們必須將其添加到所有可能的車的列表中,並且我們必須將其添加到可用車的列表中。
我沒有問題將其添加到汽車列表中,但是當我需要將其添加到可用汽車列表中時,出現分段錯誤。
我現在將提供代碼:
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。
我然後創建一個新的汽車,並把在用戶給了我(的里程數和ID號)的數據
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語句進行了一些測試之後,我發現seg fault在這個語句中發生了。
availCur->aCar->idNum[k] = idNum[k];
我希望有人能告訴我爲什麼這項任務會導致段錯誤。 我檢查了用戶提供的idNum
是好的,它適用於添加到所有車型列表,所以我不知道什麼是錯的。
我很感激幫助!
謝謝,我選擇了你選擇的答案,因爲它最簡潔,並且非常直接地回答了問題。 – Blackbinary 2010-10-21 13:23:59