Изменение значения в структуре через указатель
Не получается изменить значение переменной в структуре через указатель. В чём ошибка?
struct ko
{
int i;
double n;
char r[3];
};
ko* a;
a->r = "ab";
Ответы (1 шт):
Автор решения: LShadow77
→ Ссылка
запись a->r = "ab" в С++ означает, что переменной a->r присваивается указатель на константную строку "ab", а не копируется эта строка в массив. Соответственно, есть два варианта. Первый - объявить поле r, как указатель на const char:
struct ko
{
int i;
double n;
const char* r; //указатель
};
ko* a;
a->r = "ab";
Второй - вместо присваивания использовать strcpy() или ещё лучше strncpy():
struct ko
{
int i;
double n;
char r[3]; //массив
};
ko* a;
strncpy(a->r, "ab", 2);
a->r[2] = '\0'; //обязательно завершить нулём!