Ho questo codice:
Mi crasha con la funzione di ricerca del nodo, come mai? Devo preparare un esame per giovedì xDcodice:#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; }

Rispondi quotando