Ho questo codice:
codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
typedef struct dispensa* disp;
struct dispensa{
	char* codice;
	char* descrizione;
	int quantita;
	disp next;
};

void stampalista(disp il);
disp search_node(disp il,char* cod);
disp insert_head(disp il,disp tmp);

int main(int argc, char *argv[]) {
	char* cod; char* desc; int quant; cod=malloc(sizeof(char)*256);
	FILE* fp;
	fp=fopen("dispensa.txt","r");
	disp il=NULL;
	disp tmp;
    tmp=NULL;
	while(!feof(fp))
	{
	desc=malloc(sizeof(char)*256);
	fscanf(fp,"%256[^;];%256[^;];%d\n", cod,desc,&quant);	
    il=search_node(il,cod);
	if(il!=NULL)
	il->quantita+=quant;
	else{
    tmp=malloc(sizeof(struct dispensa));
	tmp->codice=malloc(sizeof(char)*256);
    strcpy(tmp->codice,cod); 
    tmp->descrizione=malloc(sizeof(char)*256);
	strcpy(tmp->descrizione,desc);
	tmp->quantita=quant;
	tmp->next=NULL;
	il=insert_head(il,tmp);
	}}
	
	stampalista(il);
	
	system("PAUSE");
	return 0;
}

disp search_node(disp il,char* cod)
{
    //if((il==NULL) || (strcmp(il->codice,cod) == 0)) return il; 
  //else return search_node(il->next, cod); 
     while(strcmp(il->codice,cod)!=0 && il!=NULL)
     {                             
       il=il->next;
       }
  return il;   
}


void stampalista(disp il)
{
     while(il->next!=NULL)
     {
      printf("%s\t%s\t%d\n",il->codice,il->descrizione,il->quantita);
      il=il->next;
     }
}

disp insert_head(disp il,disp tmp)
{
	if(il!=NULL)    
     tmp->next=il;  
  return tmp; 
}
Mi crasha con la funzione di ricerca del nodo, come mai? Devo preparare un esame per giovedì xD