Witajcie. Moglibyście powiedzieć czy to zadanie wykonałem prawidłowo. W przypadku złego rozwiązania byłbym wdzięczny za wskazówki :)
Zadanie:
Proszę napisać program w którym:
- zdefiniowany zostanie typ strukturalny o nazwie osoba z
następującymi polami:
1 char * nazwisko
2 char * imie (pola dynamicznie alokowane) - zdefiniowana zostanie zmienna ws_osoba typu wskaźnik do osoba a następnie przydzielona zostanie jej dynamicznie pamięć
-od użytkownika pobrane zostaną dwa łańcuchy znaków: Nazwisko i Imię i umieszczone we właściwych polach struktury (jako dynamicznie za-alokowane zasoby) - następnie proszę wyświetlić adresy: struktury i jej pól, wyświetlić zawartość struktury, zwolnić przydzieloną dynamicznie pamięć
I oto mój kod :
#include <stdio.h>
#include <stdlib.h>
struct person{
char *last_name;
char *name;
};
struct person *p_person;
int main(void)
{
p_person=malloc(sizeof(struct person));
p_person->last_name=malloc(sizeof(struct person));
if (p_person->last_name == NULL){
fprintf(stderr, "error in malloc");
exit(1);
}
p_person->name=malloc(sizeof(struct person));
if (p_person->name == NULL){
fprintf(stderr, "error in malloc");
exit(1);
}
puts("Proszę podać nazwisko i imię:");
scanf("%s", p_person->last_name);
scanf("%s", p_person->name);
printf("%s %s\n", p_person->last_name, p_person->name);
printf("Adres nazwiska:%p\nAdres imienia:%p", p_person->last_name, p_person->name);
free(p_person);
free(p_person->last_name);
free(p_person->name);
return 0;
}