Questo è il mio codice... ora non da errori ma non funziona. Si so leggere da file in modo lineare, ho problemi con le condizioni.
Non riesco ancora a gestire il tutto coi puntatori mi sa, ho un blocco mentale.
Tiponodo *creanodo(char *titolo, int codice, char *editore, int prezzo);
tiponodo *inserttail(tiponodo *head, tiponodo *n);
void printlist(tiponodo *t);
int main()
{
FILE *fp;
char titolo[10];
int codice=0;
char editore[10];
int prezzo=0;
tiponodo *lista=NULL, *aux=NULL;
fp=fopen("elenco_libri", "r");
while(fscanf(fp, "%s,%d,%s,%d\n", titolo, &codice, editore, &prezzo)==4){
for (aux=lista; aux; aux->next){
if(!strcmp(aux->titolo, "nonvalido")==0){
aux=creanodo(aux->titolo, aux->codice, aux->editore, aux->prezzo);
lista=inserttail(lista, aux);
}
else aux=aux->next;
}
printlist(lista);
}
return 0;
}
tiponodo *creanodo(char *titolo, int codice, char *editore, int prezzo) {
tiponodo *new;
new=(tiponodo *)malloc(sizeof(tiponodo));
if(!new){
fprintf(stderr,"Errore di allocazione \n");
exit(-1); }
strcpy(new->titolo,titolo);
new->codice=codice;
strcpy(new->editore, editore);
new->prezzo=prezzo;
new->next=NULL;
return new;
}
tiponodo *inserttail(tiponodo *head, tiponodo *n){
if(!head){
n->next=NULL;
return n;
}
head->next=inserttail(head->next,n);
return head;
}
void printlist(tiponodo *t){
if(!t) return t;