AUTTAKAAHAN C-GURUT, ETTÄ MIKÄ ON VIKANA KOODISSA KUN KAATUU LISTAAN LISÄYKSEEN MENNESSÄ: Tässä on vain pätkät koodista, oleelliset, joissa sen vian täytyy olla... Ohjelma siis kääntyy kauniisti mutta (testitulosten perusteella) kaatuu tuossa lisäystä kutsuttaessa ja heittä SEGMENTATION FAULT-ilmoituksen. Nyt ei nappaa mulla, osaisitteko neuvoa?
**************
typedef struct tiedot {
char taulukko[MAX];
int maara;
int vaarat;
} Tiedot, *TiedotPtr;
typedef tiedotLista {
Tiedot tieto;
struct tiedotLista *nxt;
} TiedotLista, *TiedotListaPtr;
TiedotListaPtr uusi_tiedot_lista() {
TiedotListaPtr L;
if (L != NULL) L->nxt = NULL;
return L;
}
TiedotListaPtr lisaa_tiedot(TiedotListaPtr AL, Tiedot data) {
TiedotListaPtr q;
q = uusi_tiedot_lista();
if (q == NULL) return AL;
q->tieto = data;
q->nxt=AL;
return q;
}
TiedotListaPtr lista_seuraava(TiedotListaPtr L) {
return L->nxt;
}
Tiedot hae_data(TiedotListaPtr L) {
return L ->tieto;
}
********************
funktiossa josta kutsun ym. niin oon esitelly seuraavat muuttujat.
********************
Tiedot arv;
TiedotListaPtr L;
TiedotPtr arvL;
********************
ja lisänny structiin tiedot:
*********************
for (i=0; i
**************
typedef struct tiedot {
char taulukko[MAX];
int maara;
int vaarat;
} Tiedot, *TiedotPtr;
typedef tiedotLista {
Tiedot tieto;
struct tiedotLista *nxt;
} TiedotLista, *TiedotListaPtr;
TiedotListaPtr uusi_tiedot_lista() {
TiedotListaPtr L;
if (L != NULL) L->nxt = NULL;
return L;
}
TiedotListaPtr lisaa_tiedot(TiedotListaPtr AL, Tiedot data) {
TiedotListaPtr q;
q = uusi_tiedot_lista();
if (q == NULL) return AL;
q->tieto = data;
q->nxt=AL;
return q;
}
TiedotListaPtr lista_seuraava(TiedotListaPtr L) {
return L->nxt;
}
Tiedot hae_data(TiedotListaPtr L) {
return L ->tieto;
}
********************
funktiossa josta kutsun ym. niin oon esitelly seuraavat muuttujat.
********************
Tiedot arv;
TiedotListaPtr L;
TiedotPtr arvL;
********************
ja lisänny structiin tiedot:
*********************
for (i=0; i
Vastaukset 2
Vanhimmat
tutkin vielä ja huomasin että kaatuu tuossa arv.maara ja arv.vaarat sijoitusten välissä! En tajua. Kaatuu tuon arv.maarat jälkeen siinäkin tapauksessa, vaikka ottaisin koko arv.vaarat sijoituksen pois ja koko structista vaarat pois.
Neuvoja kiitos...
TiedotListaPtr uusi_tiedot_lista() {
TiedotListaPtr L; /* ALUSTAMATON MUUTUJA */
/* muistin varaus */
L = (TiedotListaPtr)calloc(1,sizeof(TiedotLista));
/* calloc nollaa varaamansa muistin, malloc olisi toinen vaihtoehto..*/
if (L != NULL) L->nxt = NULL;
return L;
}