Opgaver i denne lektion  forrige -- Tastaturgenvej: 'p'        Gå til slide, hvor denne opgave er tilknyttet -- Tastaturgenvej: 'u'  

Opgave 13.5
Læsning af personkartotek i komma-separeret tekstfil


Skriv et program der indlæser tekstfilen i et array af følgende struct:

  #define MAX_NAME_LGT 50
  struct person{
    char fornavn[MAX_NAME_LGT];
    char efternavn[MAX_NAME_LGT];
    char vejnavn[MAX_NAME_LGT];
    int vejnummer;
    int postnummer;
    char bynavn[MAX_NAME_LGT];
  };

Indholdet af tekstfilen findes også nederst i opgaven.

Tekstfilen er linje-orienteret. Data om én person findes på én linje. Navne-delen, gade-delen og by-delen er adskilt af kommaer, og linjen er afsluttet med et punktum. Der optræder ikke cifre i fornavn efternavne, gadenavne eller bynavne. Hver person har ét fornavn og ét efternavn. Gadenavnet kan bestå af flere ord. Bynavnet består af netop et ord.

Overvej omhyggeligt hvordan du læser bestanddelene af en linje. Det er måske nyttigt for dig at bruge scansets i din løsning, som et alternativ til %s . Vær forsigtig med at ikke at få indlæst et komma som en del af efternavnet. Vær også forsigtig med, at et vejnavn ikke ender med et 'space'.

Sorter de indlæste data efter efternavn og udskriv de sorterede data på en anden fil. Filen skal have følgende simple linje-format:

  By: Efternavn

Denne fil skal genereres med det givne input.

 

Her er input filen til programmet:

Lars Jensen, Engtoften 23, 7182 Bredsten.
Bo Olsen, Gammel Vestergade 56, 4261 Dalmose.
Kurt Jensen, Haderslevvej 15, 8370 Hadsten.
Birte Madsen, Universitetsvej 899, 9000 Aalborg.
Kaj Moberg, Halevindingevej 2, 2670 Greve.
Bo Rise, Hadsund Landvej Nord 56, 8900 Randers.
Ebbe Rise, Hadsund Landvej Syd 58, 9520 Hobro.
Kalle Rastrup, Under Broen 567, 2650 Hvidovre.
Emil Rask, Over Broen 765, 2650 Glostrup.
Jens Larsen, Finkevej 1, 6682 Hovborg.
Lars Olsen, Gammel Vindingevej 2, 7560 Hjerm.

Her er output filen fra programmet:

Hadsten: Jensen
Bredsten: Jensen
Hovborg: Larsen
Aalborg: Madsen
Greve: Moberg
Hjerm: Olsen
Dalmose: Olsen
Glostrup: Rask
Hvidovre: Rastrup
Randers: Rise
Hobro: Rise


Løsningen til denne opgave er pt. ikke frigivet