У меня возникли некоторые проблемы с изменением указателя обугленного и не могу понять, где я буду неправильноПроблем с изменением константного символа указатель
Вот моя функция для изменения описания ...
void appointment::changeDescription(const char * s) // change an existing description
{
if (desc != NULL)
strcpy(desc, s);
if (s == NULL)
return;
}
И вот функция, которая вызывает функцию описания изменений.
bool keyBoardEnterAppointment(schedule & sched) // return true if successful
// return false if full
{
if (sched.isFull() == true)
{
cout << "Schedule is FULL." << endl;
return false;
}
else
{
appointment s;
int day, month, year;
char *desc = new char;
long source;
cout << "*/Enter Appointment\\* ";
cout << "Description: "; cin >> desc;
cout << "Source: "; cin >> source;
cout << "Month: "; cin >> month;
cout << "Day: "; cin >> day;
cout << "Year: "; cin >> year;
s.changeDescription(desc);
s.setSource(source);
s.setDay(day);
s.setMonth(month);
s.setYear(year);
sched.addtoSchedule(s);
sched.print(cout);
return true;
}
}
Он компилируется и работает, но описание остается такой же, как описание конструктора по умолчанию ...
Сделайте жизнь проще для себя и просто используйте 'std :: string'. – shuttle87
'char * desc = new char;' Это выделяет достаточно памяти для одной буквы. Возможно, попробуйте: 'char * desc = new char [32]; // 31 символ (+1 для терминатора) '. Или char 'desc [32];' тогда вам не придется 'delete []' it (что вы здесь не делали). – Galik
Не следует ли сначала проверять, является ли 's'? –