W twoim kodzie widać kilka błędów. Ogólnie nie mogłeś się zdecydować czy pisać w C++ czy w C.
Słyszałeś o czymś takim jak klasa string?
void setgolf(golf & g, const char * name, int hc) {
//name = g.fullname;
strcpy(g.fullname, name);
g.handicap = hc;
}
Źle przypisujesz argumenty. strcpy() stworzy kopię zamiast przypisywać wskaźnik.
void setgolf(golf & g) {
//char * name;
int hc;
cout << "Podaj nazwe: ";
cin>>name;
//name = g.fullname;
//cin.clear();
cin.sync();
cout << "Podaj ilosc: ";
cin>>hc;
g.handicap = hc;
//cin.clear();
cin.sync();
}
char* name;
cin >> name;
Tu leży pies pogrzebany. (Pytanie na stackoverflow z podobnym problemem)
1. char* i cin to złe połączenie. Polecam zamienić to na klasę string.
2. char* to wskaźnik! W tej sytuacji wskazuje on na nic
3. cin.clear() - czyści flagi błędu; cin.sync() - synchronizuje z strumieniem stdin (usuwając pozostałe litery do wczytania)
int main() {
golf *g = new golf[3];
//memset(g,0,sizeof(golf)*3);
//...
}
Jeśli coś dalej jest nie tak, warto też użyć memset() przy dynamicznej alokacji pamięci aby wyczyścić ją.