I en tidigare version av den här uppgiften fanns ytterligare en deluppgift, men vi stryker den ur den obligatoriska inlämningsuppgiften. Om man vill göra den frivilligt, finns en beskrivning här.
Datorn Skynet, som råkar vara programmerbar i C, har problem med att hålla reda på sina terminatorer. Därför ska vi hjälpa den genom att skriva ett program som den kan köra.
Varje terminator har en typbeteckning, till exempel T-800 eller T-1000, och ett unikt identitetsnummer, till exempel 17 eller 238746. Terminatorerna kan också råka ut för skador, eftersom hänsynslösa människor vandaliserar dem. Därför kan varje terminator ha ett antal skaderapporter, som anger de skador just den terminatorn fått i sin termineringsverksamhet, men skaderapporterna ingår inte i den här uppgiften.
Inmatningen ska avslutas med filslut. Raderna ska kunna skrivas i fritt format, dvs man ska kunna ha ett eller flera blanktecken mellan varje ord på raden.TERMINATOR T-800 123
När alla data lästs in ska en lista skrivas ut som anger vilka terminatorer som finns.
Skriv ett program som läser in rader enligt ovan från en fil (eller, om man vill, standardinmatningen), och som lagrar information om terminatorerna i länkade listor enligt figuren nedan. Posterna skapas med anrop till malloc.
Godtyckligt många terminatorer ska kunna lagras, så länge de får plats i datorns minne. Namnet på en terminatortyp, som "T-800", kan vara högst tio tecken långt. Tänk på att du måste allokera en extra plats för strängavslutningstecknet '\0'.
Felaktiga rader ska ge ett felmeddelande, och sen ska programmet fortsätta utan att bry sig om den felaktiga raden.
Om du inte känner dig helt säker på hur du ska lösa uppgiften, kan det vara bra att först göra ett förslag på hur din datastruktur ska se ut, med deklarationer av posttyperna (struct), och visa denna för läraren.
Testfiler: testfil-1.txt med 100 terminatorer, testfil-2.txt med en miljon terminatorer (nu i korrekt version!)