Przekazuję dane typu struct Person do listy połączonej, więc wskaźnik danych każdego węzła wskazuje na postać struct.Przesyłanie z void * do struct
struct Person {
char name[16];
char text[24];
};
Próbuję przemierzać listy i wydrukować nazwę/tekst w każdym węźle przez wywołanie
traverse(&list, &print);
prototyp biegu jest:
void traverseList(struct List *list, void (*f)(void *));
Lista jest zdefiniowany jako:
struct List {
struct Node *head;
};
Moje p funkcja rint akceptuje pustkę * dane:
Wiem, że muszę rzucić dane do struct Person, prawda?
struct Person *person = (struct Person *)data;
printf("%s", person->name);
Wiem, że to nie wystarcza, ponieważ otrzymuję ostrzeżenie "inicjowanie z niezgodnego wskaźnika typu". Jak mogę w tym przypadku skutecznie odrzucić pustkę *? Dziękuję Ci.
Co to jest prototyp 'traverse'? A który typ to 'list'? –
Możesz chcieć sprawdzić, w jaki sposób przekazujesz listę do przechodzenia i jak faktycznie używasz drukowania. Wszystko, co pokazałeś, wydaje się pasować. – unxnut
@ValeriAtamaniouk Zmieniłem moje pytanie, aby je uwzględnić. – user1889966