Ragazzi come mai questo programma mi và in loop?
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*/
}
Grazie in anticipo davvero.