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;
}