Napisz odpowiedni prototyp funkcji inicjalizacja_OSOBA(), która dla podanych argumentów (inicjalizuje strukturę odpowiednimi danymi. Wykorzystaj funkcję malloc() aby przydzielić odpowiednią ilość miejsca w strukturze na przechowanie łańcuchów oznaczających imię, nazwisko...
Mam tu napisaną funkcję alokacja, nie jestem pewnien czy jest ok, i mam napisać funkcję dealokacja która dealokuje pamieć przypdzeiloną przez alokacja_OSOBA, no i nie bardzo wiem jak to zrobić, co się stanie jak dam instrukcję free(tab[i]),to co się stanie, czy musze uwalniać wszystko osobno....
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 30
#define MAX 10
typedef struct osoba {
char* imie;
char* nazwisko;
char* miejscowosc;
int wiek;
} OSOBA;
OSOBA inicjalizacja_OSOBA(OSOBA* structer,char* tab_imie,char* tab_nazwisko,char* tab_miejscowosc,int age)
{
(*structer).wiek = age;
(*structer).imie = malloc(sizeof(tab_imie));
(*structer).imie = tab_imie;
return* structer;
}
int main(void)
{
OSOBA dane[MAX];
char tab_imie[N + 1];
char tab_nazwisko[N + 1];
char tab_miejscowosc[N + 1];
int i = 0, age, k;
while (i < MAX) {
printf("Podaj imie: ");
gets(tab_imie);
printf("Podaj nazwisko: ");
gets(tab_nazwisko);
printf("Podaj miejscowosc: ");
gets(tab_miejscowosc);
printf("Podaj wiek: ");
scanf("%d", &age);
while (getchar() != '\n')
;
dane[i]=inicjalizacja_OSOBA(&dane[i], tab_imie, tab_nazwisko,
tab_miejscowosc, age);
i++;
}
printf("Podaj, ktory rekord tablicy dane chcesz wyswietlic.\n");
// for (int i = 0; i < MAX; i++)
// dealokacja_OSOBA(&dane[k]);
return 0;
}