Ragazzi come mai questo programma mi và in loop?
Grazie in anticipo davvero.codice:#include <stdio.h> #include <stdlib.h> #include <string.h> #include <malloc.h> typedef struct dati* banca; struct dati { char* nome; float valore; float percentuale; int quantita; banca next; }; banca lsist_insert_order(banca head,banca n); int main(int argc, char *argv[]) { banca il; il=NULL; FILE* fp; char* name; float val; float perc; int quant; name=malloc(sizeof(char)*256); fp=fopen("borsa.txt","r"); if(fp==NULL) printf("errore nell'apertura del file"); while(!feof(fp)){ banca nodo; nodo=malloc(sizeof(struct dati)); nodo->next=NULL; fscanf(fp,"\n%256[^;];%f[^;];%f[^;];%d\n",name,&val,&perc,&quant); nodo->nome=malloc(sizeof(char)*256); strcpy(nodo->nome,name); nodo->valore=val; nodo->percentuale=perc; nodo->quantita=quant; il=lsist_insert_order(il,nodo); } system("PAUSE"); return 0; } banca lsist_insert_order(banca head,banca n){ /*Se la lista è vuota deve mettere il nodo n in testa*/ if(head==NULL) return n; /*ritorna n come testa della lista*/ banca t=head; /*t puntatore di appoggio per scorrere la lista*/ /*Controlla se deve inserire il nodo n in testa alla lista*/ if (n->percentuale < t->percentuale) { n->next=t; /*sposta il puntatore del nodo successivo di n alla vecchia testa*/ return n; /*ritorna n come testa della lista*/ } /*Scorre la lista */ while(t->next!=NULL) { /*si ferma all'ultimo nodo*/ if (n->percentuale < t->next->percentuale) { /*confronta i campi item fra n e il nodo successivo a t*/ n->next=t->next; /*inserisce il nodo n */ t->next=n; /* dopo il nodo t */ return head; /*ritorna la testa*/ } t=t->next; /*sposta t al nodo successivo per scorrere la lista*/ } t->next=n; /*aggiunge n alla fine della lista*/ return head; /*ritorna la testa*/ }

Rispondi quotando