Ciao ragazzi, sapete per caso il motivo per cui non funziona questo codice:
#include <stdio.h>
#include <stdlib.h>
typedef struct nodo{
int ri;
int rf;
int ci;
int cf;
int identificatore;
struct nodo* next;
} nodo;
/*Buffer condiviso*/
typedef nodo* lista;
static lista buffer;
lista inserimento (int iri,int irf,int ici,int icf,int idi){
lista scorri;
lista new = malloc(sizeof(lista));
new->ri = iri;
new->rf = irf;
new->ci = ici;
new->cf = icf;
new->identificatore = idi;
new->next = NULL;
if (buffer == NULL)
return new;
else
{scorri = buffer;
while (scorri->next != NULL)
scorri = scorri ->next;
scorri->next = new;}
return buffer;
}
int main(){
int i;
lista scorri;
for (i=0; i<20; i++){
buffer = inserimento (i,i+1,0,29,i);
}
scorri = buffer;
while (scorri->next != NULL){
printf ("%d\n--------------", scorri->identificatore);
scorri = scorri ->next;
}
return 0;
}
Compila ma fallisce alla seconda iterazione del for nel main! La cosa strana è che se nel nodo della lista inserisco solo quattro int anzichè cinque funziona alla perfezione... Per esempio il seguente codice funziona:
#include <stdio.h>
#include <stdlib.h>
typedef struct nodo{
int ri;
int rf;
int ci;
int cf;
struct nodo* next;
} nodo;
/*Buffer condiviso*/
typedef nodo* lista;
static lista buffer;
lista inserimento (int iri,int irf,int ici,int icf){
lista scorri;
lista new = malloc(sizeof(lista));
new->ri = iri;
new->rf = irf;
new->ci = ici;
new->cf = icf;
new->next = NULL;
if (buffer == NULL)
return new;
else
{scorri = buffer;
while (scorri->next != NULL)
scorri = scorri ->next;
scorri->next = new;}
return buffer;
}
int main(){
int i;
lista scorri;
for (i=0; i<20; i++){
buffer = inserimento (i,i+1,0,29);
}
scorri = buffer;
while (scorri->next != NULL){
printf ("%d\n--------------", scorri->ri);
scorri = scorri ->next;
}
return 0;
}
Grazie mille in anticipo a chi mi aiuterà