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