Witam!
Taki kod najpierw zarzucę:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void pobierz_dane(struct dane *wsk);
struct wyniki_badan {
int cisnienie;
int masa;
};
struct dane {
char *imie_nazw;
long int PESEL;
struct wyniki_badan wyn;
};
int main(void) {
int i;
int ln;
struct dane osoba[4];
/*dane wczytywać w funkcji dla każego oddzielnie - funkcja wczytuje dane jednego pacj */
for (i=0; i<4; i++) {
pobierz_dane(&osoba[i]);
}
printf("\n======================================\n");
printf("%s", osoba[i].imie_nazw);
for (i=0; i<4; i++) {
printf("Imie i nazwisko pacjenta %d: %s\n", i+1, osoba[i].imie_nazw);
printf("Pesel: %d\n", osoba[i].PESEL);
printf("Masa: %d\n", osoba[i].wyn.masa);
printf("Cisnienie: %d\n", osoba[i].wyn.cisnienie);
printf("\n\n");
}
scanf("%d", &ln);
return 0;
}
void pobierz_dane(struct dane *wsk) {
char temp[81];
int rozmiar;
int licznik = 0;
char pesel[11];
char cisnienie[5];
char masa[5];
puts("Podaj imie i nazwisko: ");
gets(temp);
wsk->imie_nazw = (char*)malloc(strlen(temp) * sizeof(char));
strcpy(wsk->imie_nazw, temp);
puts("PESEL: ");
gets(pesel);
wsk->PESEL = atoi(pesel);
puts("Cisnienie: ");
gets(cisnienie);
wsk->wyn.cisnienie = atoi(cisnienie);
puts("Masa: ");
gets(masa);
wsk->wyn.masa = atoi(masa);
}
Program ma pobierać dane 4rech osób. Jednak coś nie tak mam przy wskaźniku na char *imie_nazw, który jest w strukturze. Jako, że się dopiero uczę liczę na Waszą pomoc. Kompilator wywala błąd podczas próby wyświetlenia, coś w deseń: "Access violation reading location". W debugerze znalazłem informacje "bad ptr". Pytanie, jak poprawnie się dobrać wskaźnikiem do tego elementu?
Z góry dzięki za pomoc ;)