Структура: Выражение должно быть допустимым для изменения левосторонним значением

Хочу реализовать заполнение структуры случайным образом (проблема в реализации функции random_filling). Идея в том чтобы генерировать рандомное число и и по этому числу будут браться элементы с данным индексом с массивов elements, nums, temperatures и viscosities. Но проблема в том что в функцию передается указатель, а в работе с ними я ещё не силен. Буду признателен за помощь. Ссылка на код: http://cpp.sh/6nnat


Ответы (1 шт):

Автор решения: Harry

Стандартная ошибка начинающего - пытаться присваивать что-то массиву с помощью оператора =.

Я не пытаюсь разобраться, правильный ли ваш код в смысле семантики (уверен, что нет - например, у вас есть указатель char*tmp, и вы пытаетесь копировать &tmp - т.е. просто значение этого адреса, не говоря уж о том, что переменная неинициализирована, и присвоение temp[h] в паре строк ниже - это запись в непонятное место в памяти, которое скорее всего обвалит программу. Но это уже тема для других вопросов...

Если у вас есть массив? что-то вроде

char s[100];

и вы хотите поместить в него какую-то строку, скажем, на которую указывает указатель t

char * t;

или которая находится в другом массиве

char t[100];

то для этого используется функция копирования строки

strcpy(s,t);

или ее более безопасная версия strcpy_s или dtrncpy.

Ваша запись - типа s = t; - означает, что вы просто хотите заменить значение указателя. Но поскольку s - это статически выделенный массив, эта переменная меняться не может; ей ничего присваивать нельзя.

Еще раз - ваша программа после исправления, вероятно, будет компилироваться, но вот правильно работать будет вряд ли...

→ Ссылка