Forskjell mellom versjoner av «FAQ Oblig 1»

Fra mn/ifi/INF1060
Hopp til: navigasjon, søk
(Ny side: == 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.)
 
(Utvidet litt)
Linje 2: Linje 2:
  
 
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
 +
char linje[100];
 +
Når man senere sier minNode->tekst = linje; 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.
 +
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.

Revisjonen fra 15. sep. 2010 kl. 01:04

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, feks char linje[100]; Når man senere sier minNode->tekst = linje; 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. 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.