Forskjell mellom versjoner av «FAQ Oblig 1»
(Utvidet litt) |
(markup) |
||
Linje 3: | Linje 3: | ||
Grunnen til dette er at hver struct har en peker til det samme minneområdet som innholder den siste linjen i filen. | Grunnen til dette er at hver struct har en peker til det samme minneområdet som innholder den siste linjen i filen. | ||
− | Når man leser inn en og en linje fra filen, legges disse linjene typisk i et buffer, feks | + | Når man leser inn en og en linje fra filen, legges disse linjene typisk i et buffer man har opprettet, feks et char-array på 100 tegn. |
− | char | + | |
− | Når man senere sier minNode->tekst = | + | Når man senere sier minNode->tekst = bufferet; e.l. settes pekeren i noden til å peke på bufferet. Etter en kjøring gjennom hele filen vil altså alle nodenes tekstpekere peke på det samme - det midlertidige bufferet (som inneholder siste linje). |
− | Det som må gjøres er å opprette et minneområde til tekstlinjen for hver eneste node, feks med et kall til malloc. Deretter må tekstlinja kopieres fra bufferet og inn i det allokerte minneområdet. Til det kan man bruke funksjonen strcpy() som er definert i string.h. | + | |
+ | Det som må gjøres er å opprette et minneområde til tekstlinjen for hver eneste node, feks med et kall til malloc. Deretter må tekstlinja *kopieres* fra bufferet og inn i det allokerte minneområdet. Til det kan man bruke funksjonen strcpy() som er definert i string.h. |
Nåværende revisjon fra 15. sep. 2010 kl. 01:08
Siste linje i filen printes fire ganger
Grunnen til dette er at hver struct har en peker til det samme minneområdet som innholder den siste linjen i filen.
Når man leser inn en og en linje fra filen, legges disse linjene typisk i et buffer man har opprettet, feks et char-array på 100 tegn.
Når man senere sier minNode->tekst = bufferet; e.l. settes pekeren i noden til å peke på bufferet. Etter en kjøring gjennom hele filen vil altså alle nodenes tekstpekere peke på det samme - det midlertidige bufferet (som inneholder siste linje).
Det som må gjøres er å opprette et minneområde til tekstlinjen for hver eneste node, feks med et kall til malloc. Deretter må tekstlinja *kopieres* fra bufferet og inn i det allokerte minneområdet. Til det kan man bruke funksjonen strcpy() som er definert i string.h.