Sapreste dirmi cosa c'è di sbagliato in questo programma che ho fatto, ma non riesco a fare girare? Non ho mai usato le funzioni sulle stringhe e probabilmente è lì l'errore; il file di testo contiene parole di lunghezza non predefinita e separate da uno spazio.
Grazie per l'eventuale aiuto.
codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct na{
char*inf;
struct na*sin;
struct na*des;
}ALBERO;
ALBERO*creaAlbero()
{
return NULL;
}
ALBERO*insertAlbero(ALBERO*a,char*v)
{
ALBERO*t;
if(a==NULL){
t=(ALBERO*)malloc(sizeof(ALBERO));
if(t==NULL)
return NULL;
else{
strcpy(t->inf,v);
t->sin=NULL;
t->des=NULL;
return t;
}
}
else{
if((strcmp(a->inf,v))>=0)
a->sin=insertAlbero(a->sin,v);
else
a->des=insertAlbero(a->des,v);
return a;
}
}
void stampaAlbero(ALBERO*a)
{
if(a!=NULL){
stampaAlbero(a->sin);
printf("%s\n",a->inf);
stampaAlbero(a->sin);
}
}
int main()
{
ALBERO*al;
char*x;
FILE*f;
al=creaAlbero();
f=fopen("dati.txt","r");
if(f==NULL){
printf("errore in memoria");
exit(-1);
}
else{
while((fscanf(f,"%s",x))!=EOF)
al=insertAlbero(al,x);
}
fclose(f);
stampaAlbero(al);
system("PAUSE");
return 0;
}