Witam!
Mam taki nie skomplikowany kodzik:
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
#define IMIE 10
#define NAZWISKO 20
#define TYTUL 100
#define MAX_KSIAZEK 100
#define MAX_AUTOROW 3
typedef struct
{
char imie[IMIE];
char nazwisko[NAZWISKO];
int rok_urodzenia;
}AUTOR;
typedef struct
{
char tytul[TYTUL];
int rok;
float cena;
AUTOR *autor[MAX_AUTOROW];
}KSIAZKA;
void czysc_wej(char *txt,FILE *wej);
void dodaj_ksiazke(KSIAZKA **ksiazka,AUTOR **autorzy,int *ilosc_ksiazek,int *ilosc_autorow,int ilu_autorow);
KSIAZKA pobierz_ks(void);
AUTOR pobierz_autora(void);
AUTOR *szukaj_autora(const AUTOR autor,AUTOR **autorzy,int ilosc_autorow);
int main(void)
{
KSIAZKA *ksiazki[MAX_KSIAZEK];
AUTOR *autorzy[MAX_AUTOROW*MAX_KSIAZEK];
int ilosc_ksiazek=0;
int ilosc_autorow=0;
dodaj_ksiazke(ksiazki,autorzy,&ilosc_ksiazek,&ilosc_autorow,2);
/*ZWOLNIC PAMIEC*/
return 0;
}
void dodaj_ksiazke(KSIAZKA **ksiazka,AUTOR **autorzy,int *ilosc_ksiazek,int *ilosc_autorow,int ilu_autorow) /*zmienić void na int i dodać obsługę błędów*/
{
int i,ilosc_autorow_2=0;
AUTOR autor[ilu_autorow];
AUTOR *autor_wsk;
*(ksiazka+*(ilosc_ksiazek))=calloc(1,sizeof(KSIAZKA)); /*DODAĆ sprawdzenie czy udało się zadeklarować pamięć*/
for(i=0;i<ilu_autorow;++i)
{
autor[i]=pobierz_autora();
}
**(ksiazka+*ilosc_ksiazek)=pobierz_ks();
for(i=0;i<ilu_autorow;++i)
{
autor_wsk=szukaj_autora(autor[i],autorzy,*ilosc_autorow);
if(autor_wsk==NULL)
{
*(autorzy+*ilosc_autorow+ilosc_autorow_2)=calloc(1,sizeof(AUTOR));
**(autorzy+*ilosc_autorow+ilosc_autorow_2)=autor[i];
**(ksiazka+*(ilosc_ksiazek)).autor[i]= *(autorzy+*ilosc_autorow+ilosc_autorow_2);
++ilosc_autorow_2;
}
else
{
*(autorzy+*ilosc_autorow+ilosc_autorow_2)=autor_wsk;
**(ksiazka+*ilosc_ksiazek).autor[i]=autor_wsk;
++ilosc_autorow_2;
}
}
*ilosc_autorow+=ilosc_autorow_2;
++(*ilosc_ksiazek);
}
I mam taki problem, że nie mam pomysłu jak przypisać wskaźnik do struktury AUTOR do tablicy wskaźników na struktury w strukturze KSIAZKA
próbowałem już chyba wszystkie kombinacje * . i -> i nie działa :(
dokładnie chodzi mi o fragment w funkcji dodaj_ksiazke:
void dodaj_ksiazke(KSIAZKA **ksiazka,AUTOR **autorzy,int *ilosc_ksiazek,int *ilosc_autorow,int ilu_autorow)
{
.......
**(ksiazka+*(ilosc_ksiazek)).autor[i]= *(autorzy+*ilosc_autorow+ilosc_autorow_2);
......
**(ksiazka+*ilosc_ksiazek).autor[i]=autor_wsk;
......
}
Z góry dzięki za wszelką pomoc
P.S. Jeżeli rzuci się komuś jakiś inny błąd to proszę nie mówić