Ja bym to uczynił tak:
std::string fullname;
//char fullname[SIZE];
getline(std::cin,st[i].fullname);
if(st[i].fullname=="")
break;
std::cin.ignore();
} // tu koniec pętli while
Tylko tak umiem, może pomogę. Z tym CHARem nie umiem.
PS. Nie ucieło Ci, tylko trzeba suwakiem w prawo przeciągnąć.
Edit: Dobra już umiem, Moja oficialna odpowiedz wygląda tak:
Zamienić:
std::cin>>st[i].fullname;
Na:
std::cin.get(st[i].fullname, 30);
if((int)st[i].fullname[0]==0)
break;
I zaraz przed końcem pętli while trzeba wstawić:
std::cin.ignore();
Tym się inspirowałem: Temat z tego forum
Po wpisaniu entera w pierwszym elemencie tablicy mamy znak NUL. Po skonwertowaniu go do int równa się on 0 zgodnie z tablicą ASCI. Tak właśnie można sprawdzić, czy tablica jest pusta.
a cin.ignore() jest ze względu na użycie cin.get()