Witam,
mam napisać prostą książkę telefoniczną, opartą o strukturę:
struct wpis {
char *imie;
char *nazwisko;
char *telefon;
};
Na początek robię sobie tablicę 10-cio elementową oraz definiuję zmienną, która będzie mówiła ile elementów jest w książce:
struct wpis rekordy[10];
int ile_elementow = 3;
Dałem 3, bo mam już kilka rekordów w tablicy.
Następnie chce dodać nowy element do tablicy za pomocą funkcji:
void dodajWpis(struct wpis* rekordy, int* ile_elementow){
char *imie = (char*)malloc(100 * sizeof(char));
char *nazwisko = (char*)malloc(100 * sizeof(char));
char *telefon = (char*)malloc(10 * sizeof(char));
printf("Podaj imie:\n");
scanf("%s", imie);
printf("\nNazwisko:\n");
scanf("%s", nazwisko);
printf("\nTelefon:\n");
scanf("%s", telefon);
*ile_elementow += 1;
rekordy[*ile_elementow].imie = imie;
rekordy[*ile_elementow].nazwisko = nazwisko;
rekordy[*ile_elementow].telefon = telefon;
free(imie);
free(nazwisko);
free(telefon);
}
W main'ie wywołuję ją tak:
dodajWpis(&rekordy[0], &ile_elementow);
Po dodaniu nowego wpisu, chcę wyświetlić cały spis i w miejscu, gdzie powinien pojawić się nowy wpis pojawia się:
�@
Naruszenie ochrony pamięci
Jak to naprawić?