Вы продолжаете перезаписывать свои временные буферы вместо создания новых буферов для каждой записи в массиве.В результате выживают только последние данные, записанные в буфер.
Вот примерное руководство по одному способу его исправления, хотя в этом примере могут быть некоторые проблемы - я не пытался скомпилировать или протестировать это.
Эта часть main принадлежит addDetail:
char* tmpName = new char[20];
char* tmpSurName = new char[120];
strcpy(tmpName, "nameA");
strcpy(tmpSurName, "surnameA");
Итак, ваш новый addDetail будет выглядеть примерно так:
void addDetail(char*& name, char*& surname)
{
if(occupation < size)
{
details[used][0] = new char[20];
details[used][1] = new char[120];
strcpy(details[used][0], name);
strcpy(details[used][1], surname);
used++;
}else{
cout << "Array Full " << endl;
}
}
И будет вызываться из main как:
addDetail("nameA", "surnameA");
Вам нужно будет обновить clear, чтобы правильно очистить выделения, сделанные в addDetail.