Cześć, przypadkiem usunąłem cały tekst z postu więc piszę jeszcze raz.. Dostałem takie zdanie do zrobienia i stworzyłem taki kod ale on nie działa . Szukam pomocy
#include <stdio.h>
#include <stdlib.h>
struct person {
char surname[50];
unsigned int wiek;
int iloscPotomkow;
struct potomek* potomkowie[];
};
struct potomek {
char surname[50];
unsigned int wiek;
};
void zrobPotomka(struct person** person,int idx)
{
struct potomek** potomek;
potomek[idx - 1] = (struct person*)malloc(sizeof(struct person));
potomek[idx - 1]->wiek = person->wiek;
memcpy(potomek[idx - 1]->surname, persons[idx]->surname, persons[idx]->surname.sizeof() / "a".sizeof());
person->iloscPotomkow + ;
person->potomkowie[idx - 1] = potomek;
freePersons(person[idx]);
};
bool ifPersonExist(int i, struct person** person)
{
if (persons[i] == NULL) {
return true;
}
else
return false;
}
void printAPerson(int i, struct person* person)
{
printf("Person(%d): %s, level %d\n", i, person->name, person->level);
}
void printPersons(struct person** persons, int num)
{
for (int i = 0; i < num; i++) {
if (persons[i] == NULL) {
continue;
}
printAPerson(i, persons[i]);
}
}
void createPersons(struct person** persons, int idx, const char* surname[], unsigned int level, int surnameLong)
{
persons[idx] = (struct person*)malloc(sizeof(struct person));
persons[idx]->level = level;
memcpy(persons[idx]->surname, surname, surnameLong);
}
void freePersons(struct person** persons, int num)
{
//Najpierw zwolnij pamiec dla wszystkich bohaterow
for (int i = 0; i < num; i++) {
if (persons[i] == NULL) {
continue;
}
free(persons[i]);
}
//teraz usun pamiec dla tablicy
free(persons);
}
int main()
{
struct person** persons;
char w;
scanf("%c", &w);
char surname[100];
int age;
int idx,idxMax=0;
int size;
printf("podaj ile chcesz stworzyć osób");
scanf(&size);
int tabOfIdx[size];
while (i < size) {
i++;
switch (w) {
case 'a':
printf("podaj indeks do utowrzenia osoby ");
scanf("%d", idx);
if (idx>idxMax){
idxMax=idx;
}
if (ifPersonExist(idx)) {
printf("podaj prosze nazwisko oraz wiek");
scanf(&surname, &age);
createPersons(person, idx, surname, age, surname.sizeof() / surname[0]);
}
else
printf("osoba o podanym in...");
case 'c':
while (i < idxMax) {
if (ifPersonExist(idx)) {
zrobPotomka(persons,i++);
}}
break;
case 'p':
printPersons(persons, size);
break;
default:
}
}
return 0;
}