ERRORE DI SEGMENTATION FAULT
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<malloc.h>
typedef struct nodo{
char* titolo;
struct nodo *sx;
struct nodo *dx;
}libro;
libro* inserisci(libro *l, char* c){
if( l == NULL){ //inserisco e ritorno il mio indirizzo al nodo che ha richiamato la funzione
libro* nuovoNodo = (libro*) malloc(sizeof(libro));// creo il nuovo nodo
l->sx = nuovoNodo; //collego il nuovo nodo all'albero
nuovoNodo->titolo = c; //il titolo del nodo punta alla stringa alla quale punta anche c, non deallocare attraverso c altrimenti perdi la stringa
nuovoNodo->sx = NULL;
nuovoNodo->dx = NULL;
return nuovoNodo;
}else{
printf("\n %s",c);
if(strcmp(l->titolo,c) == 0){ // provo a inserire lo stesso libro due volte, cosa non contemplata
return l;
}
else if( strcmp(l->titolo,c) > 0 ){
l->sx=inserisci(l->sx,c);
}else{
l->dx=inserisci(l->dx,c);
}}
return l;
}
void ordinamento(libro *l){
if(l){
printf("\n%s",l->titolo);
ordinamento(l->sx);
ordinamento(l->dx);
}
}
int main() {
FILE *fd;
char buf[200];
char *res;
int i;
libro *l = (libro*) malloc(sizeof(libro));
l->titolo = (char*) malloc(sizeof(char)*6);//titolo di prova
sprintf(l->titolo,"prova");
l->sx = NULL;
l->dx = NULL;
l=NULL;
fd=fopen("testi.txt", "r"); //apertura file
if( fd==NULL ) {
perror("Errore in apertura del file");
exit(1);
}
while(1) {
res=fgets(buf, 200, fd);/* legge fino allo /n*/
if( res==NULL )
break;
//printf("%s", res);
}
for(i=0;i<strlen(buf);i++){ //inserisco i libri nell albero con funzione inserisci
inserisci(l,buf);
//ordinamento(l);
}
/* chiude il file */
fclose(fd);
return 0;
}