Witajcie
Jako jeden z programów na zajęcia mam napisać program segregujący i wyświetlający faktury w kolejności rosnącej. Chciałbym najpierw mieć program,który korzysta ze struktury jaką jest drzewo.
Napisałem takie cos:
#include<stdio.h>
#include<stdlib.h>//do malloca
#include<string.h>//do strcmp
struct tree {
char *faktura;//uzywane jest przy drzewo->faktura
struct tree *lewy;
struct tree *prawy;
};
Zależy mi na tym,żeby zrozumieć mój błąd jaki popełniam i mam przez to naruszenie ochrony pamięci.
Serdecznie dziękuję za wszelaką pomoc i cenne wskazówki.
struct tree *dodaj(struct tree *drzewo,char *nrfaktury)
{
if(drzewo==NULL)
{
drzewo=(struct tree*)malloc(sizeof(struct tree));
drzewo->faktura=(char*)malloc(strlen(nrfaktury));
strcpy(drzewo->faktura,nrfaktury); //strcpy(strTO,strFrom)
drzewo->lewy=NULL;
drzewo->prawy=NULL;
drzewo->faktura=nrfaktury;
//return drzewo;
}//if
else
{
if(strcmp(nrfaktury,(drzewo->faktura)<0))
{
drzewo->lewy=dodaj(drzewo->lewy,nrfaktury);
}
else
{
drzewo->prawy=dodaj(drzewo->prawy,nrfaktury);
}
}//else
return drzewo;
}//dodaj
/*void drukuj(struct tree *drzewo) {
int i;
if(drzewo != NULL)
{
drukuj(drzewo->lewy);
printf("%c", drzewo->faktura);
drukuj(drzewo->prawy);
}
}*/
int main()
{
int n;//liczba faktur
scanf("%d",&n);
int i;
struct tree *drzewo=NULL;
char *numer;
for(i=0;i<n;i++)
{
scanf("%s",&numer);
dodaj(drzewo,numer);
//drukuj(drzewo);
}//for
}//main
Zależy mi na wyłapaniu i zrozumieniu gdzie popełniam błąd/błędy
Dziękuję za wszelaką pomoc i cenne wskazówki.