Ich implementiere ein "Autoflotten" Management-Tool. Für den Start, erklärte ich einen „Auto“ struct:
verkettete Liste c verlierende Kopfadresse
typedef struct Car{
char ID[9];
struct Car* next;
} Car;
Meine Flotte wird einfach eine verkettete Liste von Autos sein. Ich beginne mit einem leeren Kopf und füge Links über die Funktion add_car hinzu.
void add_car (struct Car* cars_fleet){
struct Car* car = malloc (sizeof (car));
scanf("%s",car->ID);
car->next = NULL;
if (cars_fleet == NULL){
printf ("creating new list\n");
cars_fleet = car;
}
else {
printf ("appending\n");
Car* tmp = cars_fleet;
while (! (tmp->next == NULL))
tmp = tmp->next;
tmp->next = car;
}
}
Und das ist mein Hauptprogramm:
int main(){
Car* cars_fleet = NULL;
add_car(cars_fleet);
}
Nun, aus irgendeinem Grunde, mein Programm alle Verbindungen behandelt, als ob sie die ersten waren. Ich nehme an, das passiert wegen falscher Speicherzuweisung, vielleicht bei "cars_fleet = car". Irgendwelche Tipps, Tipps oder Lösungen?
danke.
Formatierung/Einrückung :( –
'add _car (cars_fleet); 'kann cars_fleet nicht ändern, da es wertmäßig ist. –
Also was wäre die richtige Syntax hier? Wenn die Flotte ein Zeiger ist und add_cars einen Zeiger auf das Auto erhält, warum kann ich die Adresse der Flotte nicht ändern? vielleicht sollte ich das neue Auto innerhalb der ersten IF-Klausel malloc? –