Prosze o pomoc w zadaniu musze napisac funkcje inicjalizacja_OSOBA(), dealokacja_OSOBA() oraz wyswietl lecz niestety nie działa mnie to poprawnie
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 30
#define MAX 2
typedef struct osoba{
char *imie;
char *nazwisko;
char *miejscowosc;
int wiek;
} OSOBA;
void inicjalizacja_OSOBA (OSOBA *dane, char *imie, char *nazwisko, char *miejscowosc, int wiek)
{
dane->imie=(char*)malloc((strlen(imie)+1)*sizeof(char));
dane->imie=imie;
dane->nazwisko=(char*)malloc((strlen(nazwisko)+1)*sizeof(char));
dane->nazwisko=nazwisko;
dane->miejscowosc=(char*)malloc((strlen(miejscowosc)+1)*sizeof(char));
dane->miejscowosc=miejscowosc;
dane->wiek=wiek;
}
void wyswietl (OSOBA *dane)
{
puts(dane->imie);
puts(dane->nazwisko);
puts(dane->miejscowosc);
printf("%d \n", dane->wiek);
}
dealokacja_OSOBA(OSOBA *dane)
{
free(dane->imie);
free(dane->nazwisko);
free(dane->miejscowosc);
}
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');
inicjalizacja_OSOBA(&dane[i], tab_imie, tab_nazwisko, tab_miejscowosc, age);
i++;
}
printf("Podaj ktory rekord tablicy dane chcesz wyswietlic.\n");
printf("Wyjscie poza idkeks tablicy lub wpisanie znaku nie bedacego liczba konczy wypisywanie!");
while (scanf("%d", &k) == 1 && k >= 0 && k < MAX)
{
printf("Rekord %d\n", k);
printf("--------------------------\n");
wyswietl(&dane[k]);
printf("--------------------------\n");
while(getchar() != '\n');
printf("Podaj ktory rekord tablicy dane chcesz wyswietlic.\n");
printf("Wyjscie poza idkeks tablicy lub wpisanie znku nie bedacego liczba konczy wypisywanie!\n");
}
for(i = 0; i < MAX; i++)
dealokacja_OSOBA(&dane[i]);
printf("KONIEC!");
return 0;
}