Структура: Выражение должно быть допустимым для изменения левосторонним значением
Хочу реализовать заполнение структуры случайным образом (проблема в реализации функции random_filling). Идея в том чтобы генерировать рандомное число и и по этому числу будут браться элементы с данным индексом с массивов elements, nums, temperatures и viscosities. Но проблема в том что в функцию передается указатель, а в работе с ними я ещё не силен. Буду признателен за помощь. Ссылка на код: http://cpp.sh/6nnat
Ответы (1 шт):
Стандартная ошибка начинающего - пытаться присваивать что-то массиву с помощью оператора =.
Я не пытаюсь разобраться, правильный ли ваш код в смысле семантики (уверен, что нет - например, у вас есть указатель char*tmp, и вы пытаетесь копировать &tmp - т.е. просто значение этого адреса, не говоря уж о том, что переменная неинициализирована, и присвоение temp[h] в паре строк ниже - это запись в непонятное место в памяти, которое скорее всего обвалит программу. Но это уже тема для других вопросов...
Если у вас есть массив? что-то вроде
char s[100];
и вы хотите поместить в него какую-то строку, скажем, на которую указывает указатель t
char * t;
или которая находится в другом массиве
char t[100];
то для этого используется функция копирования строки
strcpy(s,t);
или ее более безопасная версия strcpy_s или dtrncpy.
Ваша запись - типа s = t; - означает, что вы просто хотите заменить значение указателя. Но поскольку s - это статически выделенный массив, эта переменная меняться не может; ей ничего присваивать нельзя.
Еще раз - ваша программа после исправления, вероятно, будет компилироваться, но вот правильно работать будет вряд ли...