Napisałem program w języku C, kompiluje się uruchamia i w pewnym momencie pojawia się problem (przypuszczam że dotyczy alokacji pamięci ale nie mam pewności ) czy mógłby ktoś sprawdzić mój kod i pomóc znaleźć błąd
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
#include<conio.h>
#include<ctype.h>
#define max 20
struct Wezel
{
char *slowo ;
int ilosc;
struct Wezel *lewo;
struct Wezel *prawo;
};
typedef struct Wezel wezel;
wezel* drzewo(wezel *korzen, char *sslowo)
{
int a;
if(korzen==NULL)
{
korzen= (struct Wezel *) malloc(sizeof (struct Wezel));
if (korzen==NULL) getch();
korzen->ilosc= 1;
korzen->lewo = NULL;
korzen->prawo = NULL;
strcpy (korzen->slowo, sslowo);
printf("mowy\n");
getch();
}
else
{
a = strcmp(sslowo,korzen->slowo);
if(a ==0)
korzen->ilosc++;
else
{
if(a<0)
{
korzen->lewo=drzewo(korzen->lewo,sslowo);
printf("lewo\n");
}
else
{
korzen->prawo=drzewo(korzen->prawo,sslowo);
printf("prawo\n");
}
}
}
return korzen;
}
void WypiszDrzewo(struct Wezel *korzen)
{
if (korzen != NULL)
{
WypiszDrzewo(korzen->lewo);
printf("%4d %s\n",korzen->ilosc,korzen->slowo);
WypiszDrzewo(korzen->prawo);
}
}
main()
{
char sslowo[max];
FILE* t;
wezel *korzen = NULL;
t = fopen( "test.txt", "r" );
if (t==NULL) return 1;
while (!feof(t))
{
fgets(sslowo,sizeof(sslowo),t);
printf("%s",sslowo);
korzen = drzewo(korzen,sslowo);
}
fclose(t);
WypiszDrzewo(korzen); //wypisuje rekurencyjnie drzewo
getch();
return 0;
}
http://rapidshare.com/files/347823823/test.txt.html to link do pliku txt na jakim ma pracować mój program
program ten ma liczyć ile razy wystąpiło dane słowo